Здравствуйте!

Столкнулся с непонятным мне поведением системы на ovz-el при синхронизации/создании/проверке программного массива RAID5.

Исходные данные: Intel(R) Core(TM)2 CPU 6420@2.13GHz, чипсет G31, SATA ICH9R в режиме AHCI. 4 SATA жестких диска. На них собран программный RAID5 массив
md5 : active raid5 sdc2[0] sdd2[4] sde2[2] sdf2[1]
1514703360 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
      bitmap: 6/482 pages [24KB], 512KB chunk, file: /_bitmap_md5

Работает все это на 2.6.32-ovz-el-alt63 (аналогичное поведение было на ovz-el ядрах и до alt63). При создании/ребилде/проверке этого массива получаю нехарактерно низкую для такой системы скорость синхронизации и нехарактерно высокий LA. Также высокий LA получается при интенсивной работе с массивом RAID5. С массивом RAID10, расположенным на тех же дисках, таких эффектов не наблюдается.

Для примера - текущий снимок системы в момент проверки массива:

cat /proc/mdstat
Personalities : [raid1] [raid10] [raid6] [raid5] [raid4]
md5 : active raid5 sdc2[0] sdd2[4] sde2[2] sdf2[1]
1514703360 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] [>....................] check = 4.6% (23342252/504901120) finish=990.1min speed=8105K/sec
      bitmap: 6/482 pages [24KB], 512KB chunk, file: /_bitmap_md5
uptime
 17:21:52 up 23 days,  4:53,  1 user,  load average: 50.28, 54.18, 49.92

В списке процессов видно ~255 штук [async/XXX] потоков ядра, из них в состоянии R находится примерно LA 1min.

По dstat картина следующая:
----total-cpu-usage---- --dsk/sdc-----dsk/sdd-----dsk/sde-----dsk/sdf-- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ: read writ: read writ: read writ| recv send| in out | int csw 4 2 60 33 0 1| 1082k 1198k: 586k 1196k:1070k 1196k: 574k 1198k| 0 0 | 23B 38B|1864 4188 1 69 30 0 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 22k 27k| 0 0 | 25k 590k 2 73 24 0 0 0| 0 0 : 0 0 :8192B 0 : 0 0 : 0 0 : 0 0 | 43k 49k| 0 0 | 28k 583k 2 72 26 0 0 0| 0 9216B: 0 25k: 0 25k: 0 9216B| 44k 49k| 0 0 | 27k 582k 7 72 21 0 0 0| 0 1024B: 0 1024B: 0 1024B: 0 1024B| 19k 22k| 0 0 | 41k 605k 2 72 25 1 0 0|8568k 2048B:7644k 2048B:8116k 2048B:7584k 2048B| 43k 48k| 0 0 | 31k 526k 2 78 18 0 0 2| 56M 0 : 57M 0 : 56M 0 : 57M 0 | 41k 46k| 0 0 | 26k 585k 1 68 31 0 0 0| 0 0 : 0 0 : 0 0 : 0 0 |5318B 7801B| 0 0 | 25k 589k 1 70 28 0 0 0| 0 13k: 0 9216B: 0 9216B: 0 13k| 27k 31k| 0 0 | 30k 585k 5 71 24 0 0 0| 0 1024B: 0 1024B: 0 1024B: 0 1024B| 31k 35k| 0 0 | 36k 603k 2 75 23 0 0 1| 0 0 : 0 0 : 0 0 : 0 0 | 70k 78k| 0 0 | 30k 577k 2 70 28 0 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 25k 28k| 0 0 | 30k 579k 1 69 29 0 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 11k 14k| 0 0 | 25k 584k 2 76 20 0 0 2|7404k 972k:6384k 940k:8524k 940k:9712k 972k| 74k 82k| 0 0 | 25k 529k 5 72 21 0 0 1| 57M 1024B: 58M 1024B: 56M 1024B: 55M 1024B| 21k 24k| 0 0 | 34k 599k 3 75 22 0 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 48k 54k| 0 0 | 33k 582k^C

Мне кажется, что на таком железе скорость синхронизации RAID5 в 10 Мб/с при LA 50 - это несколько чересчур. При этом, как видно по dstat, ядра загружены совсем не на 100%. Также из dstat видно очень больное количество context switches и программных прерываний.

Подскажите пожалуйста, куда можно покопать в этом вопросе. Может быть, можно что-то передать ядру/какому либо модулю, чтобы они не вели себя так ээээ.... неадекватно?


--
WBR, Alex Moskalenko
_______________________________________________
Sysadmins mailing list
Sysadmins@lists.altlinux.org
https://lists.altlinux.org/mailman/listinfo/sysadmins

Ответить