Here is a new benchmark:
With mounted folder from Host:
$ ab -n10 -c10 http://magento.dev/
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking magento.dev (be patient).....done
Server Software:
Server Hostname: magento.dev
Server Port: 80
Document Path: /
Document Length: 0 bytes
Concurrency Level: 10
Time taken for tests: 8.492 seconds
Complete requests: 10
Failed requests: 7
(Connect: 0, Receive: 0, Length: 7, Exceptions: 0)
Non-2xx responses: 1
Total transferred: 202759 bytes
HTML transferred: 199673 bytes
Requests per second: 1.18 [#/sec] (mean)
Time per request: 8491.525 [ms] (mean)
Time per request: 849.152 [ms] (mean, across all concurrent requests)
Transfer rate: 23.32 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.1 1 1
Processing: 2 4023 3614.3 5173 8490
Waiting: 0 4021 3613.7 5172 8482
Total: 3 4024 3614.3 5174 8491
Percentage of the requests served within a certain time (ms)
50% 5174
66% 6435
75% 7491
80% 8074
90% 8491
95% 8491
98% 8491
99% 8491
100% 8491 (longest request)
With volume only on the VM:
$ ab -n10 -c10 http://magento.dev/
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking magento.dev (be patient).....done
Server Software: Apache/2.4.20
Server Hostname: magento.dev
Server Port: 80
Document Path: /
Document Length: 33229 bytes
Concurrency Level: 10
Time taken for tests: 1.161 seconds
Complete requests: 10
Failed requests: 0
Total transferred: 337120 bytes
HTML transferred: 332290 bytes
Requests per second: 8.61 [#/sec] (mean)
Time per request: 1161.144 [ms] (mean)
Time per request: 116.114 [ms] (mean, across all concurrent requests)
Transfer rate: 283.53 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.3 1 1
Processing: 395 764 278.1 882 1160
Waiting: 395 764 278.1 881 1159
Total: 396 765 278.2 883 1161
Percentage of the requests served within a certain time (ms)
50% 883
66% 905
75% 965
80% 1075
90% 1161
95% 1161
98% 1161
99% 1161
100% 1161 (longest request)
So I can confirm the general feeling, the beta13 makes it usable now and the change are on the right path we are just not as the near OS speed yet, though.
We are using NodeJS/Gulp aund gulp-watch to watch the filesystem for changes.
Up until yesterday it was just very slow but since 1.11.1-beta13 (build: 7975) the watch mechanism is completely broken. It does not recognize any file changes in a long time and when it does the docker container breaks itself completely.
OSX El Capitan 10.11.5 (15F34)
Docker Version 1.11.1-beta13.1 (build: 8193)
The speed extremely slow! /app is mounted volume.
root@bd98b360b79d:/app# time dd if=/dev/zero of=test bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 40.905 s, 2.5 MB/s
real 0m40.936s
user 0m0.260s
sys 0m3.130s
root@bd98b360b79d:/tmp# time dd if=/dev/zero of=test bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 1.14822 s, 89.2 MB/s
real 0m1.244s
user 0m0.050s
sys 0m0.440s
I found this articlevery helpful. TL;DR: You can mount a volume (usually via busybox) that provides speedy access to cached directories. It won’t solve every use case, but for things like gem dependencies it’s awesome.
My tests on:
OSX El Capitan 10.11.4
Version 1.11.1-beta13.1 (build: 8193):
root@2d660f476351:/usr/share/nginx/html# time dd if=/dev/zero of=test bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 24.8516 s, 4.1 MB/s
I just replied in another thread about a possible (nasty) workaround I found and have set up. This temporary solution works very well for me, although I do not expect to everyone like it. It simply adds another container for syncing changes from the mount to the application folder.
Do you guys think this is possible to provide nfs as the alternative filesystem? docker for mac beta is awesome and the only problem is the performance of mounted volumes. If we could use NFS instead, even temporarily, that would make docker for mac super useful!
Yes, ATM I try each docker beta release and still fallback to a VirtualBOX with NFS share of my source code as volume sharing is the main issue of docker beta, other ones are ok to live with.
NFS and friends, don’t support fs events (https://developer.apple.com/library/mac/documentation/Darwin/Reference/FSEvents_Ref/index.html) propagation (, that’s why they are building the new osxfs fs layer, using NFS with Docker for mac does not have much sense now, i hope that the performance issues will be mainly solved in the new few weeks, but i feel that the things are much more complicated than expected, just consider that filesystem like NFS are in production since 30+ years and they still suffer problems.
Yes, this is truth. NFS has its flaws. Nevertheless, it is already used by most of us.
As you said NFS is developed since 30+ years - for me, it just proves that it will be super difficult to find a better solution (i still keep fingers crossed).
Still very slow in release candidate. Is this something that has priority for a coming release? The slowness of bound filesystems makes development quite a difficult proposition with certain kinds of projects.
root@ec530c9c1dbd:/# cd /tmp/
root@ec530c9c1dbd:/tmp# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB, 98 MiB) copied, 0.666999 s, 154 MB/s
root@ec530c9c1dbd:/tmp# cd /project/
root@ec530c9c1dbd:/project# dd if=/dev/zero of=test.dat bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB, 98 MiB) copied, 24.3231 s, 4.2 MB/s
Guys maybe you are missing the point of OSXFS, it has been developed mainly to overcome to the limit of network filsystems that don’t support propagation of filesystem events.