ホワイトプラスのエンジニアのkaizoaです。
なんでもやります💪
去年のAdvent CalendarでDocker for Macのファイル共有のベンチを見てたので今年もやってみたいと思います。
Docker for Mac のファイル共有でconsistencyを指定してアクセスを速くする(CE-17.04.0)
Docker for Macのファイル共有が遅いので計測してみる
普段からリネットの全エンジニアが使う開発環境のDocker for Macですが、もともとボリュームのファイル共有があまり速くないため、もっと速くなってくれると嬉しいです。
Docker Community Edition 17.11.0-ce-rc4-mac39 2017-11-17 (Edge)
一年の振り返り的な意味の他に、こちらのアップデートの効果が期待できるのでやってみたいと思いました。
For systems running APFS on SSD on High Sierra, use raw format VM disks by default. This increases disk throughput (from 320MiB/sec to 600MiB/sec in dd on a 2015 MacBook Pro) and disk space handling.
Existing disks are kept in qcow format, if you want to switch to raw format you need to “Reset to factory defaults”. To query the space usage of the file, use a command like:
$ cd ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/
$ ls -ls Docker.raw
3944768 -rw-r--r--@ 1 user staff 68719476736 Nov 16 11:19 Docker.raw
The first number (3944768) is the allocated space in blocks; the larger number 68719476736 is the maximum total amount of space the file may consume in future in bytes.
APFSの環境(High Sierra)でRAWフォーマットのVMディスクを使っていればosxfsがスループット向上するとのことです。
OSのアップグレードが必要な場合は、一度Docker for MacをReset to factory defaults
する必要があります。
計測
使うコードは去年と一緒です。
実行環境は去年と多少変わってるけど、大して性能差ない気がする
- MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports)
- High Sierra 10.13.1
- Docker 17.11.0-ce-mac40 (20561)
#consistent
testing: warning: no tests to run
BenchmarkReadVolumeFile_Buf128-2 1000 1772383 ns/op
BenchmarkReadVolumeFile_Buf1024-2 1000 1501613 ns/op
PASS
ok bench-fio 3.702s
#cached
testing: warning: no tests to run
BenchmarkReadVolumeFile_Buf128-2 2000 916963 ns/op
BenchmarkReadVolumeFile_Buf1024-2 3000 438266 ns/op
PASS
ok bench-fio 3.313s
#delegated
testing: warning: no tests to run
BenchmarkReadVolumeFile_Buf128-2 2000 896985 ns/op
BenchmarkReadVolumeFile_Buf1024-2 3000 406570 ns/op
PASS
ok bench-fio 3.183s
全体的に向上が見られ、cachedの2つ目のベンチでは7割増し💪
ホワイトプラスではエンジニアを募集しています
ホワイトプラスでは、web×リアル領域で「新しい日常を創りたい」エンジニアWanted!!しております。