После нескольких недель устранения некоторых проблем с производительностью, которые у меня есть на моем VPS под управлением Ubuntu 12.04 LTS, я приближаюсь к выводу, что проблема связана с вводом-выводом.
Когда у меня есть значительное количество файлов, к которым необходимо получить доступ, загрузка процессора увеличивается до 100%. Однако IOWAIT нет, поэтому кажется, что почему-то не справляется именно ЦП.
С помощью fio
чтобы сделать тест на случайное чтение, мне удалось собрать этот вывод. На других машинах (например, на моем личном Ubuntu) я заметил, что процессорное время для выполнения точно такого же теста намного меньше, небольшая часть. Время ниже нормы? Если нет, то в чем может быть причина? Может быть, процесс виртуализации слишком сильно нагружает ЦП по сравнению с собственным доступом к диску?
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio 1.59
Starting 1 process
random-read: Laying out IO file(s) (1 file(s) / 128MB)
Jobs: 1 (f=1): [r] [100.0% done] [12185K/0K /s] [2975 /0 iops] [eta 00m:00s]
random-read: (groupid=0, jobs=1): err= 0: pid=24264
read : io=131072KB, bw=10298KB/s, iops=2574 , runt= 12728msec
clat (usec): min=119 , max=162219 , avg=380.34, stdev=957.37
lat (usec): min=119 , max=162219 , avg=380.89, stdev=957.40
bw (KB/s) : min= 7200, max=13424, per=99.89%, avg=10285.72, stdev=1608.68
cpu : usr=2.80%, sys=18.65%, ctx=33511, majf=0, minf=23
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued r/w/d: total=32768/0/0, short=0/0/0
lat (usec): 250=45.57%, 500=37.17%, 750=3.41%, 1000=7.83%
lat (msec): 2=5.67%, 4=0.27%, 10=0.08%, 20=0.01%, 250=0.01%
Run status group 0 (all jobs):
READ: io=131072KB, aggrb=10297KB/s, minb=10545KB/s, maxb=10545KB/s, mint=12728msec, maxt=12728msec