[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

винчестер быстро читает, медленно пишет



День добрый.
Имеется жесткий диск 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: