винчестер быстро читает, медленно пишет
День добрый.
Имеется жесткий диск Segate ST3160021A, на 160 гиг, разбит на несколько
неравных половин, файловая система ext3.
ayax:~# df -h |grep hda1
/dev/hda1 3.8G 883M 2.8G 25% /
Работает на материнке D850GB от Intel, Sarge с послендними апдейтами,
P4-1.4, 256 RAM, доступны два ядра, одно 2.4.27-2-386 которое приехало с
Sarge, а второе самосборное 2.6.8 (исходники из репозитория).
Наблюдается _некий_дисбаланс_ между скоростью чтения и записи на диск.
Читает вроде побыстрее, но пишет жудко медленно, около .5-1.2 МБ в секунду.
Для иллюстрации скорости записи и чтения скомпилировал следующее:
ayax:~# cat rtest.c
#include <stdio.h>
void main(){
int i;
FILE *O;
O = fopen("testfile", "rb");
for(i=0;i<1024*1024*10;++i) fscanf(O, "a");
fclose(O);
}
ayax:~# cat wtest.c
#include <stdio.h>
void main(){
int i;
FILE *O;
O = fopen("testfile", "wb");
for(i=0;i<1024*1024*10;++i) fprintf(O, "a");
fclose(O);
}
Получилось вот что:
ayax:~# time ./wtest
real 0m18.027s
user 0m0.013s
sys 0m0.048s
ayax:~# time ./rtest
real 0m1.972s
user 0m1.965s
sys 0m0.008s
Как можно увидеть, и читает то оно медленновато, но пишет медленно до
невозможности. "на глаз" подобный результат и с другим диском от Maxtor
на 40 гиг, но этот Макстор на другом компе работает удовлетворительно
(ядро 2.4.24 самосборное, PIII-1G, 128 RAM, материнка тоже от Intel).
Не знаю насколько релевантен такой тест (testfile в аккурат 10 мегабайт):
ayax:~# time cat testfile > /dev/null
real 0m0.016s
user 0m0.006s
sys 0m0.010s
Если просто загрузится в 2.6 то hdparm говорит:
ayax:~# hdparm /dev/hda
/dev/hda:
multcount = 0 (off)
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 19457/255/63, sectors = 312581808, start = 0
ayax:~# hdparm -tT /dev/hda
/dev/hda:
Timing cached reads: 1820 MB in 2.00 seconds = 910.14 MB/sec
Timing buffered disk reads: 168 MB in 3.01 seconds = 55.77 MB/sec
Пробовал двигать параметры, multcount сделал 16, а IO_support 32 бита,
результаты тестов существенно не изменились (разница вполне сходит на
статистическую погрешность).
Для сравнения грузил Knoppix 3.9 (runlevel 2), ядро 2.6.11, смонтировал
раздел и там произвел:
root@tty1[root]# time ./wtest
real 0m1.843s
user 0m1.739s
sys 0m0.079s
root@tty1[root]# time ./rtest
real 0m1.836s
user 0m1.811s
sys 0m0.013s
Привел параметры hdparm (то, что "hdparm /dev/hda" показывает) в
соответствие тому что в кноппиксе, а именно:
root@tty1[root]# hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 19457/255/63, sectors = 312581808, start = 0
результат только ухудшился (раза в 2).
Результаты тестов вполне стабильны, странных шумов и ошибок не
наблюдается, ничего сегодня не курил, и проблемному компу не давал. До
этого на компе работала wXP pro (но с другим диском), скорость доступа к
диску была удовлетворительна.
Проблема наблюдается как с дефолтным ядром, так и с самосборным.
В гугле искать решение пробовал, но не могу сформулировать запрос, все
не то выходит.. Не знаю как это называется (:
Подскажите, куда копать?
Заранее спасибо!
Reply to: