On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Увеличение скорости IDE Harddisk



Двукратное увеличение скорости было замечено на массивных дисковых операциях
ввода/вывода (таких как клонирование диска) при установках для IDE устройства -
использовать DMA и 32-bit передачу данных.
Ядро кажеться по умолчанию использует более консервативные установки.

Комманда:

# /sbin/hdparm -c 1 /dev/hda (или hdb, hdc и т.д.)

Для испоьзования 32-bit I/O на PCI шине. ( В hdparm(8) manpage говориться что
вам может потребоваться использовать опцию "-c 3" для некоторых чипсетов
материнских плат. )

Команда:

# /sbin/hdparm -d 1 /dev/hda (или hdb, hdc и т.д.)

Использование DMA. Это может зависить от поддержки вашего чипсета на
материнской плате которая встроено в ядро.

Вы можете протестировать свои изменения запустив hdparm в режиме теста
скорости.
# /sbin/hdparm -t /dev/hda (или hdb, hdc т.д.)

Когда вы найдете оптимальные установки для себя , вы должны сделать:

# /sbin/hdparm -k 1 /dev/hda (или hdb, hdc т.д.)

для сохранения этих параметров до сброса IDE контроллера.
Я заметил, что ядро иногда ресетит IDE контроллер и если вы не
установите "-k 1", то установки будут сброшены на дефолтные
и вы потеряете свое увеличение призводительности.

Опция "-m" может быть использована для изменения кол-ва сектров передоваемых
за каждое прерывание. Вы можете получить дополнительный выигрыш "играя"
с ней, но мне она не помогла.
------------------------------------------------------------------------
Фрагментация.

Когда файл записываеться на диск он зачастую будет записан в последовательные
блоки. Файл который записан не в последовательные блоки- фрагментирован.
На чтение фрагментированного файла требуеться больше времени т.к. головка
диска совершает больше перемещений. Желательно избегать фрагментации.
Для систем с хорошим буфером кэша и с упреждающим чтением это меньшая проблема.

Ext2 файловая система пытаеться минимально фрагментировать файлы, сохраная
все блоки файла ближе друг к другу, даже когда они не могут быть сохранены в
последовательных секторах. Ext2 эффективно распологает свободные блоки -
которые наиболее близки к другим блокам файла. Для ext2 редко возникает
необходимость заботиться о фрагментации. Большенство дистрибутивов содержит
программы для дефрагментации, но если у вас ее нет вы можете взять ее здесь:
ftp://metalab.unc.edu/pub/Linux/system/filesystems/

Существует множество MS-DOS дефрагментирующих программ которые перемещают блоки
по всей  файловой системе при дефрагментации. Для других типов
файловых систем дефрагментация может быть выполнена резервным копированием
файловой системы, пересозданием ее, и восстановлением файлов с резервных копий.
Резервное копирование файловой системы перед дефрагментацией являеться хорошей
идеей для всех типов файловых систем, т.к. могут произойти различные казусы
в течении фрагментации.

Другие утилиты для ext2 файловой системы:

В дополнение к mke2fs(создание файловой системы) и e2fsck(проверка) которые
обычно имеются в дистрибутиве, ext2 файловая система имеет некоторые
дополнительные утилиты, которые могут быть полезны:

tune2fs корректирует параметры файловой системы. Некоторые наиболее интересные
параметры:

.Счетчик монтирования.  e2fsck принудительно проверяет файловую систему при
достижении
определенного числа подключений(монтирования) ее, даже если флаг проверки
не установлен.
.Для систем которые используються для разработок или тестирования может
быть хорошей идеей уменьшить этот предел.
. Максимальное время между проверками. e2fsck может так же задавать максимальное
время между двумя проверками диска, даже если флаг проверки не установлен и
файловая система не была монтирована очень часто. Это может быть выключено.
. Число блоков зарезервированных для root. Ext2 резервирует некоторое кол-во
блоков для root так что если файловая система заполниться, все еще будет
возможность администрировать систему без необходимости удалять что-либо.
По умолчанию резервируеться 5%,что на некоторых дисках не экономно.
На флоппи дисках место не резервируеться.

Также смотрите:

debugfs это отладчик файловой системы. Он позволяет на прямую иметь доступ к
данным и структурам файловой системы и может быть использован в при
восстановлении
диска, если он настолько поврежден, что fsck не может исправить автоматически.
Он так же может быть использован для восстановления удаленных файлов. Но
использование debugfs требует понимания что вы делаете, иначе вы можете
уничтожить
все свои данные.

dump и restore могут быть использованы для резервного копирования ext2
файловой системы. Они спечефичны для версии ext2 и входят в традиционный набор
утилит для резервного копирования в UNIX.

Зачем иметь большие блоки

Если вы в Linux постоянно работаете с большими файлами, вы должны обратить
внимание на увеличение скорости работы файловой системы при форматировании
вашего диска с большим размером блока. По умолчанию файловая система Linux
использует 1024 байта на блок. Кроме того, если вы манипулируете файлами
размером с 1Gb(прим переводчика: наверное автор хотел сказать 1Mb) вы можете
попробовать сделать подобное:
mke2fs -b 4096 /dev/что-то
При этом размер блока будет 4 кб, вместо 1кб. Это увеличит время перемещения,
уменьшит фрагментацию и увеличит скорость работы fsck.

Проблема только одна-вернуться к 1024 байт на блок можно опять таки
переформатированием. При форматировании данные бубут уничтожены.

Кроме того если вы серьезно думаете сделать это, вы так же должны знать,
что система резервирует 5% диска для логов и для роста, в случае если диск
полон. С 4кб блоками 5% будет занимать больше места. Вы можете уменьшить
это до 1% командой:
mke2fs -b 4096 -m 1 /dev/whatever

------------------------------------------------------------------------
Что за файл программа изменила?
Если вам надо узнать какие файлы изменила программа(внутри дирректории)
когда она запустилась, перед запуском программы наберите комманду: touch *
Это изменит время создание файла на текущее. Запустите программу. Затем
посмотрите
на время создания снова. Программа модифицирывала те файлы у которых дата
поменялась.

------------------------------------------------------------------------
Сделайте ваши файлы и дирректории немного защищенней.

Используйте комманду:
chattr +i из под root для того что бы сделать файлы и дирректории
неприкосаемыми для rm и т.д. Даже для root-а. Оменить можно :chattr -i

Бед блоки.

Никогда не помешает проверить диск на бэд-блоки, это не трудно.
Существует 3 полезных программы которые помогут вам найти и восстановить
бэд-блоки в вашей файловой системе. Вы можете обнаружить бед-блоки с помощью
программы badblocks.
Синтакс:
badblocks -o bad.block.output.file /device/name number.of.blocks start block,

Вот для примера:
badblocks -o badblocks /dev/sda2 2024190 1
Проверит устройство /dev/sda2 которое имеет 2024190 блоков начиная с блока 1,
и выведет результат в файл с названием badblocks
Если вы не знаете сколько блоков на вашем диске, вы можете использовать вторую,
более удобную программу-dumpe2fs. Она скажет вам все о файловой системе на
определенном устройстве, включая общее кол-во блоков. Вот пример того что
она выведет:

Filesystem volume name:
Last mounted on:
Filesystem UUID: 8d42d04c-15f1-11d3-9a9c-0040053f15fc
Filesystem magic number: 0xEF53
Filesystem revision #: 0 (original)
Filesystem features: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 507904
Block count: 2024190
Reserved block count: 101209
Free blocks: 1161922
Free inodes: 485305
First block: 1
Block size: 1024
Fragment size: 1024
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2048
Inode blocks per group: 256

Третья программа-fsck.ext2 флаг -l указывает из какого файла брать список
бэд-блоков для восстоновления.

------------------------------------------------------------------------
Увеличение скорости своп-диска.

Попробуйте расположить свой своп-диск ближе к началу вашего IDE диска.
Начало жесткого диска физически расположено на внешней часи целиндра. Головка
чтения/зписи, в этом случае, cможет покрыть большую область за один оборот
диска.
Это значит что может быть записано/считано больше данных за один оборот.
У меня разница состовляет 3MB/сек в зависимости от местоположения
логического диска на IDE устройстве.
Тест:
hdparm -t

Сделайте ваше ядро меньше и более оптимизированным.

Для того что бы сделать ядро как можно маленьким и освободить его от всего
что вам не требуеться, сделайте все, за исключением некоторых важных вещей,
в модулях ядра. Вам потребуеться некоторые очевидные вещи как IDE/SCSI доступ и
ext2 поддержку встроить в ядро.
Создайте конфигурацию ядра под ваше оборудование:
cd /usr/src/linux; make xconfig (make menuconfig)

.Установите семейство процессоров в PPro/6x86MX для Pentium II/III систем.
.Разрешите MTRR для PentiumPro/II/III and newer(Прим перводчика: тут я не
пойму что хотел сказать автор. new -новый . newer - такого слова нет. Может это
опечатка и автор подразумевал never(никогда). Из одной буквы смысл меняеться на
противоположный newer ? never. оставляю как есть)-AMD K6-2/3 систем.
.Разрешите 'Symmetric multiprocessing' если вы используете только
многопроцессорные
системы.
.Запретите 'Advanced Power Management' если у вас сервер.
.Запретите багофиксы для чипсетов которых у вас нет.
Пример: CMD640 и RZ1000
.Разрешите Generic PCI bus-master DMA поддержку и использование DMA по умолчанию
(Use DMA be defaults)
.Разрешите поддержку чипсета который у вас есть.
Пример: VIA82C586 для VIA VP2/3 и MVP3 материнских плат.
.Разрешите RAID-0 (striping) если у вас есть несколько одинаковых жестких
дисков.
.Запретите Kernel/User netlink socket
.Разрешите только SCSI типы устройств, которые у вас есть.
Пример: SCSI диск, но без tape/CD-ROM/generic
.Запретите Verbose SCSI error reporting
.Запретите SCSI logging facility
.Разрешите ТОЛЬКО специфичные SCSI контроллеры, которые у вас есть.
Пример: Adaptec AIC7xxx
.Test and Tune the Maximum number of commands per LUN
.Запретите ВСЕ сетевые устройства поддержка которых вам не нужна.
.Установите максимальное число Unix98 PTYs в 128
.Запретите Watchdog Timer поддержку
.Запретите все файловые системы
Исключение: ISO 9660 CDROM, Second extended fs,/dev/pts, и /proc поддержка.
.Запретите все сетевые файловые системы (NFS)
Если вам нужна NFS серверная поддержка - отредактируйте исходник и
#undef NFS_PARANOIA
.Запретите все консольные драйвера
Исключение: VGA text console
.Запретите Enhanced Real Time Clock поддержку
.Запретите все non-essential serial and mouse device support.
.Запретите все Video for Linux
.Запретите все non-SCSI/IDE/ATAPI CD-ROMs
.Запретите все ISDN
.Запретите воткни и развлекайся (Plug and Play)
.Запретите все Amateur Radio
.Запретите все Loadable modules
.Запретите поддержку инфракрасных устройств (IrDA subsystem)
.Запретите поддержку джойстиков (Joysticks)
.Запретите все Ftape
.Запретите все Partition Types
.Запретите все Native Language Support
.Запретите все драйвера для звуковых карт (Sound cards)

Попробуйте другие вещи:
отредактируйте /usr/src/linux/Makefile
найдите строку:
MAKE =make
и измените ее на
MAKE =make -j5
будет использоваться несколько копий make с которыми на некоторых системах
будет быстрей компилироваться программы.

Потом измените:
CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
на
CFLAGS = -Wall -Wstrict-prototypes -O7 -fomit-frame-pointer -fno-exceptions

Что включит использование оптимизирующих фишек, которые могут работать
или не работать со всемя ядрами. (оптимизация кода при компиляции)
Вы можете попробовать подобные значения для HOSTFLAGS.
------------------------------------------------------------------------

Больше текста.

Если у вас есть поддержка в ядре для этого, вы можете установить текстовые
режимы высокого разрешения поместив vga параметр в ядро. Для примера в lilo,
наберите <labelname> vga=ask где labelname - метка вашего ядра.(linux vga=ask)
Вам будут представлены возможные разрешения. огда вы выберете подходящий
для вас режим, вы можете добавить vga=x в свой /etc/lilo.conf файл, где x
номер режима.
Пояснение: Если номер разрешения который вы выберете будет содержать буквы
(шеснадцатеричный код) (a,b,c,d,e,f) вы должны перед номером режима подставить
'0x'. (0xa000)
------------------------------------------------------------------------
Своп-как много в этом слове.

Ядро может использовать своп-разделы на различных дисках в RAID0 стиле
монтируя их с одинаковыми приоритетами.

Ваш /etc/fstab должен содержать что-то типа этого:

/dev/hda1       swap    swap    defaults,pri=1  0 0

/dev/hdc1       swap    swap    defaults,pri=1  0 0

Лучше всего поместите своп-раздел на IDE диски находящиеся на разных шинах,
т.к. master и slave на одной шине не могут передовать данные одновременно.
Это не являеться проблемой для SCSI дисков.
------------------------------------------------------------------------

Увеличение производительностит X11

(требуеться процессор pentium pro или лучше + mrrt включенное в ядре)
cat /proc/pci
---------------------

VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1).
Medium devsel. IRQ 7. Master Capable. Latency=40. Min Gnt=4.Max Lat=255.
Non-prefetchable 32 bit memory at 0xf8000000 [0xf8000000].

---------------------
Видим нашу видеокарту, теперь мы можем увеличить скорость записи в устройство
используя 'write-combining'
Комманда разрешающая 'write-combining' в 4-х меговую область начинающуюся с
0xf8000000 :
echo \"base=0xf8000000 size=0x400000 type=write-combining\" >> /proc/mtrr

Теперь в /proc/mtrr мы видим следующую новую строчку:
reg02: base=0xf8000000 (3968MB), size= 16MB: write-combining, count=1

Если понадобиться запретить использование 'write-combining':
echo \"disable=2\" >> /proc/mtrr











Литература по Linux