oceanbase / docker-images

Official source of container configurations and images for OceanBase products.
https://hub.docker.com/r/oceanbase
Apache License 2.0
0 stars 5 forks source link

[Question]: Oceanbase docker cpu utilization is high in macos. #27

Open kevinbin opened 1 year ago

kevinbin commented 1 year ago

Please check the issue list for the same question

Describe your question

image

docker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce

Server version: OceanBase_CE 4.0.0.0 (r100000272022110114-6af7f9ae79cd0ecbafd4b1b88e2886ccdba0c3be) (Built Nov 1 2022 14:53:48)

Software:

System Software Overview:

  System Version: macOS 12.4 (21F2081)
  Kernel Version: Darwin 21.5.0
  Boot Volume: Macintosh HD
  Boot Mode: Normal
  Secure Virtual Memory: Enabled
  System Integrity Protection: Enabled
  Time since boot: 49 days 3 minutes

Hardware:

Hardware Overview:

  Model Name: MacBook Air
  Model Identifier: Mac14,2
  Chip: Apple M2
  Total Number of Cores: 8 (4 performance and 4 efficiency)
  Memory: 16 GB
  System Firmware Version: 7459.121.3
  OS Loader Version: 7459.121.3
dimstars commented 1 year ago

We reproduced the above scenario. In the monitor of macos, the docker process takes up about 130% of the cpu. If we execute top command in docker, we can see only 60% cpu usage. This is close to the overhead of a physical machine. Hope this solves your problem. image

image

xros commented 1 year ago

I think the problem is that on you Apple Silicon Mac, @kevinbin you were using qemu to emulate the x86_64 CPU which ran your x86_64 docker instances on the ARM64 Mac. The performance of emulation is very different from virtualization, especially for Macintosh Computers with ARM64 chips. Docker Desktop for ARM64 Macs will emulate x86_64 instructions using qemu.

Within your Docker Desktop App on your Mac, in the settings you can try to switch on or off of the button of the "Apple Virtualization Framework". Because "Apple Virtualization Framework" is not opensource and there will always be some problems for its Apple Silicon Chips to run x86_64 instructions on the ARM64 chip. If you switch to use x86_64 CPU, the efficiency could be better. You can try to run a same ARM64 docker instance with "Apple Virtualization Framework" being enabled, the performance will better comparing to the same x86_64 docker instance.