TinySQL

DMA - DirectMemoryAccess, прямой доступ к памяти. «Непрямым» доступом к памяти называется обмен под управлением процессора, - процессор забирает у устройства данные, потом помещает их в память, и так в цикле до того пока устройство не закончит обмен. Чтобы освободить процессор от перекачек данных в память и обратно (процессору и так есть чем заняться кроме этого) был придуман DMA. Важно понимать, что в системе вроде MS-DOS, где процессор занят только одной задачей, PIO может оказаться быстрее DMA, последний режим дает выигрыш только в многозадачных системах.

Простое решение

для небольших сайтов

  • 100% переносимость
  • Простой интерфейс
  • Скорость ограничена только возможностями HDD
  • API для тех, кто желает разнести UI и ServerSide (в разработке)

Управляем дисками: hdpard

DMA - DirectMemoryAccess, прямой доступ к памяти. «Непрямым» доступом к памяти называется обмен под управлением процессора, - процессор забирает у устройства данные, потом помещает их в память, и так в цикле до того пока устройство не закончит обмен. Чтобы освободить процессор от перекачек данных в память и обратно (процессору и так есть чем заняться кроме этого) был придуман DMA. Важно понимать, что в системе вроде MS-DOS, где процессор занят только одной задачей, PIO может оказаться быстрее DMA, последний режим дает выигрыш только в многозадачных системах.

В messages:

Jul 12 02:40:26 k418 kernel: hdc: dma_intr: status=0x51 { DriveReady SeekComplete Error }Jul 12 02:40:26 k418 kernel: hdc: dma_intr: error=0x84 { DriveStatusError BadCRC }Jul 12 02:40:26 k418 kernel: ide: failed opcode was: unknown


To turn off dma per drive:

# hdparm -d0 /dev/hd[a-d]


To list dma settings:

# hdparm -d /dev/hd[a-d]


To turn dma on:

# hdparm -d1 /dev/hd[a-d]


Where hd[a-d] is hda, hdb, hdc, hdd.

Где были найдены решения

Examples:

root@k418:/var/www# hdparm -tT /dev/sda/dev/sda:Timing cached reads:   430 MB in  2.01 seconds = 214.31 MB/secTiming buffered disk reads:  226 MB in  3.02 seconds =  74.73 MB/sec  root@bear:/var/www# hdparm -Tt /dev/sda/dev/sda:Timing cached reads:   24706 MB in  2.00 seconds = 12366.44 MB/secTiming buffered disk reads: 408 MB in  3.01 seconds = 135.41 MB/secroot@krishman:~# hdparm -tT /dev/sda/dev/sda:Timing cached reads:   1752 MB in  2.00 seconds = 876.24 MB/secTiming buffered disk reads: 230 MB in  3.02 seconds =  76.11 MB/sec# hdparm -I /dev/sda 

- информация о винчестере requested directly from the drive, which is displayed in a new expanded format with considerably more detail than with the older -i option.

Cледующее - извлечение из <3>, раздел "Оптимизация настроек жесткого диска с IDE-интерфейсом":

Доступ к информации на IDE-винчестере осуществляется в 50-100 раз медленнее, чем к данным в оперативной памяти. Поэтому настройка быстродействия жесткого диска является критичной. Команда hdparm позволяет ускорять IDE-диски (лучше всего Quantum (ныне Maxtor), хуже - WesternDigital, совсем плохо - Fujitsu. Ускорение в работе на операции ввода-вывода достигается использованием специализированных IDE-драйверов, прямого доступа к памяти, 32-разрядного обмена и блочных режимов передачи данных.
НЕВЕРНЫЙ ВЫБОР ПАРАМЕТРОВ МОЖЕТ УГРОБИТЬ ДИСК.
Следует посмотреть в BIOS, поддерживает ли система DMA и включена ли поддержка этого режима.

Step01: применим к большинству дисков - включает 32-разрядный ввод-вывод по PCI-шинам, и может удвоить скорость:

# /sbin/hdparm -c3 /dev/hda


Здесь и далее предполагаем ускорение диска hda. Опция "-c3" работает почти со всеми 32-разрядными микросхемами IDE. Читай

# /sbin/man 8 hdparm -c3 /dev/hda


Step02: включает обычный режим DMA для старых DMA-дисков (может удвоить скорость):

# /sbin/hdparm -d1 /dev/hda


Step03: Протокол Multiword DMA mode 2 (скорость передачи данных - до 16.6 МБ/с), известный как ATA-2 интерфейс. Если диск поддерживает таковой, следует выполнить:

# /sbin/hdparm -d1 -X34 /dev/hda


Step04: Протокол Multiword DMA mode 3 (максимальная скорость - 33 МБ/с), называемый Ultra DMA, а также ATA/ATAPI-4. С таким диском следует выбрать:

# /sbin/hdparm -d1 -X66 /dev/hda


Step05: Протокол Ultra DMA с пропускной способностью 66 МБ/с, известный как ATA/ATAPI-5 (такие диски появились в 1999 году), включается так:

# /sbin/hdparm -d1 -X12 -X68 /dev/hda


Step06: Протокол Ultra DMA c пpoпycкнoй cпocoбнocтью 100 MБ/c, извecтный кaк ATA/ATAPI-6 (наиболее распространённый на момент написания источника - 2003 г.; диски появились в 2000 году, когда был объявлен чипсет i820E, поддерживающий протокол UltraATA/100) включается так:

# /sbin/hdparm -d1 -X12 -X70 /dev/hda


Step07: Режим Multiple sector mode (IDE Block Mode) поддерживается большинством современных IDE-дисков, - сокращает число обращений к диску, включается так:

# /sbin/hdparm -mXX /dev/hda

Параметр XX - максимальное значение, поддерживаемое IDE/ATA-диском. Определить его можно командой:

# /sbin/hdparm -i /dev/hda

, на которую последует ~10-строчный ответ, в котором нас интересует параметр MaxMultSect=16 в четвертой строке.

Step08: Число секторов get/set влияет на быстродействие при многократном обращении к большим файлам. Значение этого параметра по умолчанию - 8 секторов (4 кБайт). Авторы советуют увеличить его вдвое:

# /sbin/hdparm -a16 /dev/hda


Step09: Флаг get/set interrupt-unmask несколько увеличивает скорость обмена с жестким диском и устраняет ошибки переполнения последовательного порта:

# /sbin/hdparm -u1 /dev/hda


Step10: Кэширование записи несколько увеличивает скорость обмена с жестким диском. Для включения кэширования можно выполнить:

# /sbin/hdparm -W1 /dev/hda


Step11: Для включения опций дай команду:

# /sbin/hdparm -K1 -k1 /dev/hda


Step12: Протестировать настройки можно командой:

# /sbin/hdparm -vtT /dev/hda/dev/hda:multcount   = 16 (on)I/O support =  3 (32-bit w/sync)unmasking   =  1 (on)using_dma   =  1 (on)keepsetting =  1 (on)nowerr      =  0 (off)readonly    =  0 (off)readahead   = 16 (on) geometry    - 1826/255/63, sectors=29336832, start=0Timing buffer-cache reads: 128 MB in 0.85 seconds = 150.59 MB/secTiming buffered disk reads: 64 MB in 2.54 seconds =  25.20 MB/sec


После установки и проверки опций hdparm в конец файла /etc/rc.local логично добавить строку, например:

# /sbin/hdparm -c3 -d1 -X12 -X68 -m16 -a16 -u1 -W1 -k1 -K1 /dev/hda

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


Создание сайта и поддержка проекта - ООО "Сайт!"