Твой софтовый форум > Тематические форумы > Операционные системы > *NIX

Crash

,

Навернутые (Слипшиеся) топики о *Nix

Дата публикации: 26.04.2005 - 20:59
Pages: 1, 2, 3, 4, 5, 6, 7, 8
Volk
Разгоняем жесткие диски в Linux

Code
Многие использующие Linux не подозревают о том, что его можно сделать еще быстрее, по крайней мере, в области работы с жестким диском.
Итак, первое, что требуется вам, это утилита hdparm версии 3.9 (узнать версию можно с помощью hdparm -V). Она доступна только из-под root. Эта утилита управляет параметрами драйвера IDE в Linux.
ПРЕДУПРЕЖДЕНИЕ

Перед всеми экспериментами уйдите в однопользовательский режим (telinit 1) или остановите все лишние сервисы. Дело в том, что в ходе экспериментов можно подвесить систему - думаю, никому не охота потерять данные. Плюс - на некоторых машинах в результате "игр" с DMA (ключи -d и -X) и unmask irq (-u) на дисках может нарушиться целостность файловой структуры, поэтому будьте осторожны.
Давайте посмотрим на диск (здесь я буду проводить эксперименты над своим вторым диском).

[root@multik /root]# hdparm /dev/hdb

/dev/hdb:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)

geometry = 2491/255/63, sectors = 40032696, start = 0

Как вы видите, все отключено - везде стоят "0" или "off". Давайте посмотрим, что же может выжать Linux из этого диска.

[root@multik /root]# hdparm -t /dev/hdb

/dev/hdb:
Timing buffered disk reads: 64 MB in 17.08 seconds = 3.75 MB/sec

Всего 3.75 мегабайт в секунду. Это ли современные скорости? Между прочим, большинство дистрибутивов работают с диском именно так.
Итак, давайте его разгоним хоть чуть-чуть. Следующая команда должна пройти без ошибок на любом более-менее новом железе.
[root@multik /root]# hdparm -m2c3u1 /dev/hdb

/dev/hdb:
setting 32-bit I/O support flag to 3
setting multcount to 2
setting unmaskirq to 1 (on)
multcount = 2 (on)
I/O support = 3 (32-bit w/sync)
unmaskirq = 1 (on)

Этой командой мы включили драйвер IDE в 32х битный режим, настроили контроллер на запрет генерации прерываний при любой работе с диском и разрешили передавать более одного слова за такт. Кстати, параметр -u1 часто помогает на машинах, где модем перестает качать или музыка заикается во время интенсивной работы с жестким диском.
Давайте еще раз посмотрим скорость:

[root@multik /root]# hdparm -t /dev/hdb

/dev/hdb:

Timing buffered disk reads: 64 MB in 9.28 seconds = 6.90 MB/sec

Вот, уже неплохо, но все равно слабовато. Та техника, которая стоит у меня, способна на большее.
Что нам остается еще сделать? Правильно - включить наконец DMA.

[root@multik /root]# hdparm -d1 /dev/hdb

/dev/hdb:
setting using_dma to 1 (on)
using_dma = 1 (on)

[root@multik /root]# hdparm -t /dev/hdb

/dev/hdb:

Timing buffered disk reads: 64 MB in 3.06 seconds = 20.92 MB/sec

Неплохая прибавка в скорости, не считаете?
Желающие и имеющие соответствующее оборудование, могут поиграться с параметром -X33 или -X66, включающие соответственно UDMA33 и UDMA66. Режим UDMA100 включается параметром -X69.
Итак, вы протестировали машину на разных тестах (или просто поработали достаточно долгое время за ней) и убедились, что винты спокойно тянут такое. Теперь достигнутое надо зафиксировать. Самое простое - добавить в конец /etc/rc.d/rc.local строчку, вызывающую hdparm с вашими параметрами. В моем случае это будет /sbin/hdparm -m2c3u1d1 /dev/hdb.  

В случае RedHat-подобных дистрибутивов (ASPLinux, Mandrake, SuSE и т.д.) самое логичное - это поправить файл /etc/sysconfig/harddisks - например, параметру -m2 в нем соответствует строчка MULTIPLE_IO=2. Но этот способ не подходит тем, у кого к машине подключены разные приводы - некоторые диски могут не поддерживать режим UDMA и другие прелести современной жизни. В этом случае остается только один выход - заносить все эти параметры в rc.local.

Остается одна проблема - современные машины и ноутбуки поддерживают режим "спячки". При его включении снимается питание со всех устройств, оставляя его только на материнской плате для поддержки состояния машины. Таким образом, когда машина "просыпается", то все параметры винчестеров возвращаются к своему первоначальному состоянию. Часто при этом на консоли и в логе появляются сообщения о невозможности спозиционировать головку на диске (правильно, ведь диску необходимо время, что бы набрать скорость). Правда, надо отдать должное, на некоторых ноутбуках стоит "умный" BIOS, который возвращает им установленные значения. На Linux процессом "спячки" и "пробуждения" управляет демон apmd. Итак, если ваша машина подвержена такому недугу, придется поправить файл /etc/sysconfig/apmd (где располагается этот файл в дистрибутивах, отличных от RedHat-подобных, я не знаю, уточните по man apmd). За установку параметров диска при остановках-включениях машины отвечают эти две строчки.

#HDPARM_AT_SUSPEND="-q -X0 -q -c0 -q -d0 -q -u0 -q -S0"
#HDPARM_AT_RESUME="-q -X66 -q -c1 -q -d1 -q -u1 -q -S30"

Уберите комментарии (удалите символ # в начале строки) и в кавычках перепишите те параметры, которые вы передаете hdparm при запуске машины. Первая строчка выполнится при "засыпании" машины, вторая - при ее пробуждении. Параметр -q означает лишь то, что hdparm не будет никуда рапортовать о устанавливаемых параметрах.

Таким образом, вторая строчка для моего случая приобретет следующий вид.

HDPARM_AT_RESUME="-q -m2 -q -c3 -q -d1 -q -u1"

Но будьте осторожны, эти параметры применятся ко всем жестким дискам в системе. Как ограничить apmd - я не нашел.

Кстати, так же можно чуть разогнать и CD-ROM. Правда, не все параметры применимы и к ним (попробуйте для начала убрать -m2).

Итак, все разогнано, но вас начинает потихоньку доставать, что ваш новый 52х скоростной CD-ROM постоянно завывает, когда вы с него играете mp3 музыку. В мире Windows просто - есть кучка программ, заплатив за которые деньги, вы получите доступ к "рычагу скоростей" вашего привода. В самом деле, для проигрывания mp3 хватит 2х привода, плюс к тому же он не так шумит и диски не греются. Итак, давайте затормозим свой привод.

В Linux еще проще:  

[root@multik /root]#hdparm -E 1 /dev/hdc

/dev/hdc:
setting cdrom speed to 1

Таким образом мы устанавливаем приводу, находящемуся на /dev/hdc, скорость 1х.  

Из проведенных экспериментов стало ясно, что большинство новых приводов поддерживают весь диапазон скоростей. Более старые - какое-то кратное их число. И только совсем старые поддерживают 2 скорости - 1х и свою максимальную.
farg
SUSE Linux 9.1
_ftp://freebsd.tsc.ru/pub/SuSe/
Petrovich86
Ага осталось только выделенку найди и жизнь будет прекрасна.......
мож у кого есть на болванках........
Rumbaster2
По работе придется осваивать QNX, пока столкнулся с проблемой запуска ОС - на некоторых (новых) ПК не запускается - пишет типа - "поврежден файл образа, CRC error", а на более старых, типа Celeron-733 все ОК.
Кто подскажет возможные причины и способы решения ?
iTux
Совсем не обязательно их разгонять, если у тебя машинка нормальная...
Да и риск накрыть данные Увеличивается... :-)
iTux
Какие нужны дистрибы???
Пишите на Аську(173158383), а я попробую достать и послать :-))
Ведь мы, линуксоиды и линуксоидши, должны быть в месте, и объединять наши возможности и богатства на благо вечной идеи OpenSource'a :-)
iTux
Цитата | Quote(farg @ 31.07.2004 - 18:41)
Цитата | Quote
Открыть \еtс и в файле fstab прописать:
/dev/hdaX /mnt/win_c vfat rw,umask=0,codepage=866,iocharset=koi8-r,gid=100 0 0

При данном варианте возможны некоторые проблемы. Файло названное по-русски невидно и замочки страненькие на папочках висять, да и с кодировками проблемы, неудобно не правда ли? Поэтому пишу вот так:
/dev/hdaX /mnt/win_c vfat rw,umask=0,codepage=866,iocharset=utf8,gid=100 0 0

т.е. iocharset=koi8-r мы заменяем на iocharset=utf8
*



Не надо менять на Утф-8, просто в fstab'e пишешь:
/dev/Какой-то_винт [tab] /mnt/Куда_надо [tab] vfat [tab] rw,codepage=866,iocharset=koi8-r (или win1251,cp1251),umask=0 (или Название группы где ты зареген? к примеру: users) [tab] 0 0
и все пучком :-)


Ну вот, совет дал... Можно и порадовать народ....
О себе: Линуксоид (сейчас Gentoo Linux 2004.3 (собранный почти в ручную :-) ), перепробавший множество осей:
-Linux (SuSE,ASP,Gentoo,RedHat,BlackCat,Mandrake,Knoppix(Debian), осталось только TurboLinux, ну и по мелочи :-) )
-BSD (FreeBSD 4.3 5.0 5.1 5.3, OpenBSD 3.0 3.3, Darwin)
-Unix (SystemV v7.0)
-Windows(3.11,95,98,Me,NT,2000(Prof+Serv),2002(XP+SP1+SP2), 2003(Standard+Enterprise Server),200x(Longhorn beta 4051)
-MacOS(8.0 8.1 9.0 9.1 10.0 10.1 щаз хочу 10.3 или 10.4)
Ну как ???
iTux
Уже есть и 10.1
Green Bug
Кошмар!
Не знаю, конечно, что это за винт с такой низкой скоростью в UDMA, но несчастным линуксоидам надо посочувствовать... Дефолтовый 16-bitный PIO.... sad.gif
iTux
Не..а :-)
Дефолтовый у мну UDMA100
Pages: 1, 2, 3, 4, 5, 6, 7, 8


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке: Crash
SoftoRooM © 2004-2024