[Comm] Старый компьютер и производительность жесткого диска

Владимир Гусев =?iso-8859-1?q?vova1971_=CE=C1_narod=2Eru?=
Пн Июн 18 01:35:14 MSD 2007


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

Вновь поднял эту тему из-за крайней необходимости и из-за окончательной 
потери терпения ждать по 5 минут каждого дейчтвия на компьютере. Из-за 
переезда вынужден сидеть на Tecra 750 CDM (233 мгц, 64 мб, S3 Virge 4 
мб). В свое время это был выдающийся агрегат среди своих современников, 
нацелен на мультимедийные задачи, практически любые порты, видеокарта 4 
мб (когда у многих тогдашних было по 1-2 мб) и т.д.

Установлен Мастер 2.4. По прошлым советам решил использовать reiserfs 
вместо ext2. Подробнейшим образом изучил возможности драйвера s3virge 
(XFree86 4.3.0) и увеличил производительность видеокарты. Использую 
Icewm и Window Maker, но не отказываюсь от некоторых kde/qt- и 
gtk2-программ (Opera, Kmail, Seamonkey, Sim).

Однако главный удар по быстродействию был нанесен работой жесткого 
диска. Первые 5 минут работы после загрузки ОС все просто хорошо 
(насколько это возможно). Все более-менее шустро и прорисовка хорошая. 
Однако после запуска пары не самых тяжелых (но нужных) приложений 
начинается кошмар - при слабой нагрузке процессора и лишь наполовину 
занятой памяти все начинает жутко тормозить, переключение между столами 
просто кошмар, нужно долго ждать пока все затихнет. Все это 
сопровождается отчаянным клокотанием и жутчайшей прорисовкой графики. 
На мой взгляд, виной всему неоптимизированный жесткий диск (тем более, 
что swap (128 мб) используется и довольно часто. Дело дошло до 
оптимизации. Итак hdparm:

[root на tecra root]# hdparm -i /dev/hda

/dev/hda:

 Model=IBM-DPLA-25120, FwRev=PL8OAB4A, SerialNo=D30D3118044
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=10592/15/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=DualPortCache, BuffSize=468kB, MaxMultSect=16, MultSect=16
 CurCHS=10592/15/63, CurSects=10009440, LBA=yes, LBAsects=10009440
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  sdma0 sdma1 sdma2 mdma0 mdma1 *mdma2 
 UDMA modes: udma0 udma1 udma2 
 AdvancedPM=yes: mode=0x80 (128)
 Drive conforms to: ATA-3 X3T10 2008D revision 1:  1 2 3

 * signifies the current active mode

Команда hdparm /dev/hda как всегда показала традиционные нули и 
16-разрядный режим (интересно, когда-нибудь настанет время, когда всё 
это будет устанавливаться на максимум при установке ОС раз и 
навсегда?).

Начал подбирать режимы по инструкции из Сети.

Пришел к следующим параметрам для hdparm:

[root на tecra root]# cat /etc/sysconfig/harddisk/hda
/sbin/hdparm -c3 -m 16 -a 16 -X34 /dev/hda

Включение dma оказалось неудачным:

[root на tecra root]# hdparm -d1 /dev/hda

/dev/hda:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 using_dma    =  0 (off)

Параметры поместил в /etc/sysconfig/harddisk/hda, при загрузке ОС видно, 
что они применяются, и действительно:

[root на tecra root]# hdparm /dev/hda

/dev/hda:
 multcount    = 16 (on)
 IO_support   =  3 (32-bit w/sync)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 16 (on)
 geometry     = 623/255/63, sectors = 10009440, start = 0

В первые несколько минут после загрузки ОС и Х тест по команде hdparm 
-Tt /dev/hda дает чуть более лучшие результаты - Timing buffer-cache 
reads в районе 50 MB/sec, Timing buffered disk reads - как и был, около 
3-4 50 MB/sec.

После запуска пары приложений и начавшегося клокотания все постепенно 
умирает. В это время тест выглядит так:

[root на tecra root]# hdparm -Tt /dev/hda

/dev/hda:
 Timing buffer-cache reads:    16 MB in  2.11 seconds =   7.58 MB/sec
 Timing buffered disk reads:   12 MB in  3.12 seconds =   3.85 MB/sec

а бывает и хуже:

[root на tecra root]# hdparm -Tt /dev/hda

/dev/hda:
 Timing buffer-cache reads:     4 MB in  2.64 seconds =   1.52 MB/sec
 Timing buffered disk reads:    2 MB in  6.49 seconds = 315.56 kB/sec

После получаса затишья приходит некоторое успокоение, однако комп нужен 
не для того, чтобы он простаивал...

Вся надежда на включение dma (по логике), но это не выходит, как видно 
из вышеприведенного примера. Читал на эту тему в сети, но не совсем 
понял, что именно нужно делать, и как обойтись "малой кровью".. 
Помогите, пожалуйста.

P.S. В Win 98 SE диск показывает производительность гораздо большую, 
нежели оптимизированный с помощью hdparm в Linux..



-- 
С уважением,
Владимир Гусев


Подробная информация о списке рассылки community