URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID13
Нить номер: 656
[ Назад ]

Исходное сообщение
"Дисковый кеш (на запись)"

Отправлено IVB , 30-Мрт-10 13:05 
Есть сервер БД (MySQL) с RAID-контроллером от Compaq, который принципиально не поддерживает кеширование записи. В связи с этим очень узким местом этой системы являются операции записи на диск.

Гугление по поводу I/O кеша в Linux не дало никакой информации (возможно, я гуглил не по тем ключевым словам...)

Поэтому обращаюсь к сообществу со следующими вопросами:

Умеет ли I/O cache в ядре Linux (речь о ядре 2.6) кешировать не только операции чтения, но и операции записи? Если умеет - как включить? И как посмотреть, включено ли оно?

Если не умеет - есть ли какой-то программный кеш, который позволит включить кеширование записи на диск в ОЗУ?

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

ОЗУ на сервере более, чем достаточно (32 гига). Практически весь этот объем занимает именно кеш.


Содержание

Сообщения в этом обсуждении
"Дисковый кеш (на запись)"
Отправлено Doka , 30-Мрт-10 22:58 
>Есть сервер БД (MySQL) с RAID-контроллером от Compaq, который принципиально не поддерживает
>кеширование записи.

что за контроллер?
можно включить кэш диска/ов, для сокращения времени отклика при записи.



"Дисковый кеш (на запись)"
Отправлено IVB , 31-Мрт-10 10:32 
>>Есть сервер БД (MySQL) с RAID-контроллером от Compaq, который принципиально не поддерживает
>>кеширование записи.
>
>что за контроллер?

Compaq Computer Corporation Smart Array 5i/532

>можно включить кэш диска/ов, для сокращения времени отклика при записи.

Подскажите, как. Или дайте ссылочку, где можно об этом почитать.


"Дисковый кеш (на запись)"
Отправлено Doka , 31-Мрт-10 12:13 

>>можно включить кэш диска/ов, для сокращения времени отклика при записи.
>
>Подскажите, как. Или дайте ссылочку, где можно об этом почитать.

копай на тему sdparm и WCE


"Дисковый кеш (на запись)"
Отправлено IVB , 31-Мрт-10 13:26 
>
>>>можно включить кэш диска/ов, для сокращения времени отклика при записи.
>>
>>Подскажите, как. Или дайте ссылочку, где можно об этом почитать.
>
>копай на тему sdparm и WCE

копнул.

sdparm работает с дисками. в моем же случае в системе дисков не видно. а видно одно устройство - /dev/cciss/c0d0 (аппаратный RAID). Возможно, через него как-то можно "достучаться" до физических дисков - но sdparm здесь вряд ли поможет...


"Дисковый кеш (на запись)"
Отправлено Andrey Mitrofanov , 31-Мрт-10 13:42 
>видно. а видно одно устройство - /dev/cciss/c0d0 (аппаратный RAID).

__Он__ и есть "диск". fdisk или lvm в руки и вперёд:

$ cat /proc/driver/cciss/cciss0
cciss0: HP Smart Array P410i Controller
Board ID: 0x3245103c
Firmware Version: 1.66
IRQ: 62
Logical drives: 2
Current Q depth: 0
Current # commands on controller: 0
Max Q depth since init: 16
Max # commands on controller since init: 31
Max SG entries since init: 31
Sequential access devices: 0

cciss/c0d0:      146.77GB       RAID 1(1+0)
cciss/c0d1:      733.90GB       RAID 5
$ cat /proc/partitions
major minor  #blocks  name

104        0  143338560 cciss/c0d0
104        1     248976 cciss/c0d0p1
104        2  143082922 cciss/c0d0p2
104       16  716708248 cciss/c0d1
254        0     499712 dm-0
254        1    5079040 dm-1
254        2    5079040 dm-2
254        3     974848 dm-3
254        4   24608768 dm-4
254        5    9768960 dm-5
254        6  262144000 dm-6
254        7   41943040 dm-7
$ _

>Возможно, через
>него как-то можно "достучаться" до физических дисков - но sdparm здесь
>вряд ли поможет...

Может логи массива попробовать почиать?

$ apt-cache search compaq array
array-info - command line tool reporting RAID status for several RAID types
arrayprobe - command line HP (Compaq) SmartArray status checker
cpqarrayd - monitoring tool for HP (Compaq) SmartArray controllers
$ _


"Дисковый кеш (на запись)"
Отправлено IVB , 31-Мрт-10 14:39 
>>видно. а видно одно устройство - /dev/cciss/c0d0 (аппаратный RAID).
>__Он__ и есть "диск".

Если бы вы прочитали весь тред, а не только последнюю фразу, вы бы заметили, что речь идет о _физических_ накопителях, подключенных к контроллеру. Именно на физических накопителях мне посоветовали попробовать включить кеширование записи.

О том, что "логические" диски RAID'а являются "дисками" в терминологии Линукса, я в курсе :)

>>Возможно, через
>>него как-то можно "достучаться" до физических дисков - но sdparm здесь
>>вряд ли поможет...
>
>Может логи массива попробовать почиать?

Как это поможет включить кеш записи на физических дисках?

>$ apt-cache search compaq array
>array-info - command line tool reporting RAID status for several RAID types
>
>arrayprobe - command line HP (Compaq) SmartArray status checker
>cpqarrayd - monitoring tool for HP (Compaq) SmartArray controllers

Насколько я понял - все они только статус показывают.

Я нашел единственную (пока) утиль - hpacucli - HP Command Line Array Configuration Utility, позволяющую "рулить" устройством. Но и она рулит только контроллером, рулить отдельными физическими дисками она не позволяет.


"Дисковый кеш (на запись)"
Отправлено Doka , 16-Апр-10 12:31 

>Я нашел единственную (пока) утиль - hpacucli - HP Command Line Array
>Configuration Utility, позволяющую "рулить" устройством. Но и она рулит только контроллером,
>рулить отдельными физическими дисками она не позволяет.

кэшем дисков позволяет .. см. документацию
=> set target ctrl slot=1
=> show

Smart Array P400 in Slot 1
   Bus Interface: PCI
   Slot: 1
   Serial Number: PAFGK0L9VWA2Z1
   Cache Serial Number: PA82C0J9VWA0EZ
   RAID 6 (ADG) Status: Disabled
   Controller Status: OK
   Chassis Slot:
   Hardware Revision: Rev E
   Firmware Version: 5.20
   Rebuild Priority: Medium
   Expand Priority: Medium
   Surface Scan Delay: 15 secs
   Post Prompt Timeout: 0 secs
   Cache Board Present: True
   Cache Status: OK
   Accelerator Ratio: 100% Read / 0% Write
   Drive Write Cache: Disabled
   Total Cache Size: 256 MB
   No-Battery Write Cache: Disabled
   Battery/Capacitor Count: 0
   SATA NCQ Supported: True


"Дисковый кеш (на запись)"
Отправлено IVB , 16-Апр-10 17:26 
>
>>Я нашел единственную (пока) утиль - hpacucli - HP Command Line Array
>>Configuration Utility, позволяющую "рулить" устройством. Но и она рулит только контроллером,
>>рулить отдельными физическими дисками она не позволяет.
>
>кэшем дисков позволяет .. см. документацию

Дайте, плиз, ссылочку!

>=> set target ctrl slot=1
>=> show

=> set target ctrl slot=0

   "controller slot=0"

=> show

Smart Array 5i in Slot 0
   Bus Interface: PCI
   Slot: 0
   RAID 6 (ADG) Status: Disabled
   Controller Status: OK
   Chassis Slot:
   Hardware Revision: Rev B
   Firmware Version: 2.76
   Rebuild Priority: Medium
   Expand Priority: Medium
   Surface Scan Delay: 15 sec
   Cache Board Present: True
   Cache Status: OK
   Accelerator Ratio: 100% Read / 0% Write
   Read Cache Size: 16 MB
   Write Cache Size: 0 MB
   Total Cache Size: 16 MB
   Battery Pack Count: 0
   SATA NCQ Supported: False

Ни слова упоминания о физических дисках...


"Дисковый кеш (на запись)"
Отправлено Doka , 16-Апр-10 18:12 
>>
>>>Я нашел единственную (пока) утиль - hpacucli - HP Command Line Array
>>>Configuration Utility, позволяющую "рулить" устройством. Но и она рулит только контроллером,
>>>рулить отдельными физическими дисками она не позволяет.
>>
>>кэшем дисков позволяет .. см. документацию
>
>
>Ни слова упоминания о физических дисках...

Firmware то последнее прошито?
судя по ХП-шному сайту последняя прошивка для 5i
2.76 от 7 июл 2008
и наскольку я помню?  с какого-то вмемени стали меняться прошивки и на дисках.
Firmware CD 3.54 (C) от 5 янв 2007
можно попробовать накатить вдруг какие опции появятся...


"Дисковый кеш (на запись)"
Отправлено IVB , 16-Апр-10 18:25 
>[оверквотинг удален]
>>>>рулить отдельными физическими дисками она не позволяет.
>>>
>>>кэшем дисков позволяет .. см. документацию
>>
>>
>>Ни слова упоминания о физических дисках...
>
>Firmware то последнее прошито?
>судя по ХП-шному сайту последняя прошивка для 5i
> 2.76 от 7 июл 2008

Она и прошита. Я ведь показал вывод 'show'

>и наскольку я помню?  с какого-то вмемени стали меняться прошивки и
>на дисках.
>Firmware CD 3.54 (C) от 5 янв 2007
>можно попробовать накатить вдруг какие опции появятся...

Ох, не люблю я на боевых серваках прошивки менять без особой на то потребности...


"Дисковый кеш (на запись)"
Отправлено anonymous , 31-Мрт-10 02:51 
покажите настройки mysql (и версии, версии назовите!).

"Дисковый кеш (на запись)"
Отправлено IVB , 31-Мрт-10 10:39 
>покажите настройки mysql (и версии, версии назовите!).

Версии чего? Ядро - 2.6.31-gentoo-r10. Мускуль - 5.0.60 (как раз сейчас обновляю до 5.0.90).

Но вопрос ведь был не про Мускуль! Вылизыванием Мускульного конфига мне еще предстоит заняться. Но перед этим я хочу устранить первое узкое место - запись на диск.

Так все-таки, умеет ли Линуховое ядро кешировать операции записи на диск?



"Дисковый кеш (на запись)"
Отправлено Doka , 31-Мрт-10 18:54 
>>покажите настройки mysql (и версии, версии назовите!).
>
>Так все-таки, умеет ли Линуховое ядро кешировать операции записи на диск?

конечно умеет (раз с дисками засада) а надоли :-)
только двойное кеширования для баз это лишнее,  лучше без кеша прямо на диск.
можно поиграться с опциями монтирования FS.
смотрите на счет опций sync|async для ext2
osyncisdsync для xfs
...


"Дисковый кеш (на запись)"
Отправлено IVB , 15-Апр-10 10:56 
>>Так все-таки, умеет ли Линуховое ядро кешировать операции записи на диск?
>конечно умеет (раз с дисками засада) а надоли :-)

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

Если я ошибаюсь, и кеширование записи на диск лучше не делать - расскажите, почему. Про надежный (тьфу-тьфу-тьфу) бесперебойник я писал еще в 1-м посте.

>только двойное кеширования для баз это лишнее,  лучше без кеша прямо
>на диск.

Это я понял (с учетом ответа от anonymous). Заниматься кешированием должен либо сам Мускуль, либо ядро, но не оба сразу.

>можно поиграться с опциями монтирования FS.
>смотрите на счет опций sync|async для ext2

ОК, спасибо.

(Я не тормоз. Был занят другими задачами, более срочными, поэтому две недели не возвращался к этой теме)


"Дисковый кеш (на запись)"
Отправлено kolayshkin , 16-Апр-10 16:51 
>Я считаю, что надо, т.к. RAID (в нашем конкретном случае) крайне медленный.
>В перспективе Мускуль переедет на более подходящее железо, но до этого
>нужно дожить (на том, что есть).

А какой у Вас рейд собран? 5-ый, 10-ый ? Если пятый, то кеш ОС вам ничем не поможет


"Дисковый кеш (на запись)"
Отправлено IVB , 16-Апр-10 17:28 
>>Я считаю, что надо, т.к. RAID (в нашем конкретном случае) крайне медленный.
>>В перспективе Мускуль переедет на более подходящее железо, но до этого
>>нужно дожить (на том, что есть).
>
>А какой у Вас рейд собран? 5-ый, 10-ый ? Если пятый, то
>кеш ОС вам ничем не поможет

Именно 5-й. Объясните, почему Линуховый кеш (на запись) не поможет?


"Дисковый кеш (на запись)"
Отправлено kolayshkin , 19-Апр-10 11:13 
>>>Я считаю, что надо, т.к. RAID (в нашем конкретном случае) крайне медленный.
>>>В перспективе Мускуль переедет на более подходящее железо, но до этого
>>>нужно дожить (на том, что есть).
>>
>>А какой у Вас рейд собран? 5-ый, 10-ый ? Если пятый, то
>>кеш ОС вам ничем не поможет
>
>Именно 5-й. Объясните, почему Линуховый кеш (на запись) не поможет?

А чем он поможет? Вы же сами говорите, что у Вас самое меленное звено - диски. 5-й рейд очень плох на случайные опреции записи, размер которых меньше всей полоски, так как при этом необходимо прочитать всю полоску целиком для перерасчета парити. Т.е. если у Вас пришла запись даже на один диск, контроллер прочитает весь страйп (количество операций равно количеству дисков), пересчитает парити и должен потом записать изменяемые данный и новую парити. При наличие кеша, контроллер пытается оптимизировать и чтение и запись с дисков, храня временные данные.


"Дисковый кеш (на запись)"
Отправлено сабакка , 19-Апр-10 12:55 
>
>А чем он поможет? Вы же сами говорите, что у Вас самое
>меленное звено - диски. 5-й рейд очень плох на случайные опреции
>записи, размер которых меньше всей полоски, так как при этом необходимо
>прочитать всю полоску целиком для перерасчета парити.

не обязательно, кстати
http://www.redbooks.ibm.com/redpapers/pdfs/redp4484.pdf


"Дисковый кеш (на запись)"
Отправлено anonymous , 01-Апр-10 02:06 
>>покажите настройки mysql (и версии, версии назовите!).
>
>Версии чего? Ядро - 2.6.31-gentoo-r10. Мускуль - 5.0.60 (как раз сейчас обновляю
>до 5.0.90).
>
>Но вопрос ведь был не про Мускуль! Вылизыванием Мускульного конфига мне еще
>предстоит заняться. Но перед этим я хочу устранить первое узкое место
>- запись на диск.

почитайте про innodb_flush_method

>Так все-таки, умеет ли Линуховое ядро кешировать операции записи на диск?

умеет.  но если приложение пользуется O_DIRECT, то записи идут мимо кэша.  поэтому нужно знать действующие настройки приложения, логично?


"Дисковый кеш (на запись)"
Отправлено IVB , 15-Апр-10 11:23 
>почитайте про innodb_flush_method

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

Параметр innodb_flush_method отсутствует в конфиге и имеет "пустое" значение, если посмотреть через "SHOW VARIABLES;".

>>Так все-таки, умеет ли Линуховое ядро кешировать операции записи на диск?
>умеет.  но если приложение пользуется O_DIRECT, то записи идут мимо кэша.
> поэтому нужно знать действующие настройки приложения, логично?

Конечно логично! Но я-то этого не знал...

Поэтому гораздо логичнее было бы сразу спросить про этот параметр :)


"Дисковый кеш (на запись)"
Отправлено сабакка , 16-Апр-10 13:04 
советуют
innodb_flush_method=O_DIRECT
если вообще используется InnoDB и есть raid адаптер с батарейкой
O_DIRECT исклячает двойное кэширование, т.к. СУБД сама занимается кэшированием и ей не нужен кэш ОС, поэтому нет нужды заморачиваться на файловом кэше.
Ну а вообще там же всё сложнее - какие-то записи обязательно должны быть записаны на диск (например записи в лог файлах) и никакое кэширование здесь не поможет - это требования для обеспечения косистентости и сохранности данных в базе.

удачи!


"Дисковый кеш (на запись)"
Отправлено сабакка , 16-Апр-10 13:09 
да, не контролере raid'а (если с батарейкой) обязательно включите write cache :) ещё базы любят память - innodb_buffer_pool_size - 70-80% от общего объёма памяти

"Дисковый кеш (на запись)"
Отправлено IVB , 16-Апр-10 17:31 
>да, не контролере raid'а (если с батарейкой) обязательно включите write cache :)
>ещё базы любят память - innodb_buffer_pool_size - 70-80% от общего объёма
>памяти

В моем 1-м посте, в 1-й строке как раз написано о том, что контроллер не поддерживает write cache


"Дисковый кеш (на запись)"
Отправлено sdog , 16-Апр-10 18:48 
>>да, не контролере raid'а (если с батарейкой) обязательно включите write cache :)
>>ещё базы любят память - innodb_buffer_pool_size - 70-80% от общего объёма
>>памяти
>
>В моем 1-м посте, в 1-й строке как раз написано о том,
>что контроллер не поддерживает write cache

Тогда советую проапгрейдится до Smart Array 5i Plus

Q7. What is the difference between the Smart Array 5i and the Smart Array 5i Plus?
A7. The Smart Array 5i Plus is the upgraded version of the Smart Array 5i now with 64MB Cache and the capability to add battery backed write cache.


"Дисковый кеш (на запись)"
Отправлено IVB , 16-Апр-10 18:59 
>>>да, не контролере raid'а (если с батарейкой) обязательно включите write cache :)
>>>ещё базы любят память - innodb_buffer_pool_size - 70-80% от общего объёма
>>>памяти
>>
>>В моем 1-м посте, в 1-й строке как раз написано о том,
>>что контроллер не поддерживает write cache
>
>Тогда советую проапгрейдится до Smart Array 5i Plus

А по существу вопроса что-то можете посоветовать?


"Дисковый кеш (на запись)"
Отправлено sdog , 16-Апр-10 23:43 
>Умеет ли I/O cache в ядре Linux (речь о ядре 2.6) кешировать не только операции чтения, но и операции записи? Если умеет - как включить? И как посмотреть, включено ли оно?

умеет и ничего включать не надо, как конкретно это работает зависит от используемой ФС и приложения.

>Если не умеет - есть ли какой-то программный кеш, который позволит включить кеширование записи на диск в ОЗУ?

все что приходит на ум - это tmpfs, но это не совсем то.

в вашем случае, я бы занялся тюнингом mysql'а, т.к. mysql имеет свою, систему кэширования, и может обходится без кэша ОС вовсе.


"Дисковый кеш (на запись)"
Отправлено sHaggY_caT , 01-Май-10 03:34 
>Есть сервер БД (MySQL) с RAID-контроллером от Compaq, который принципиально не поддерживает
>кеширование записи. В связи с этим очень узким местом этой системы
>являются операции записи на диск.

Может быть, он просто не включается без батарейки?
По теме, после прочтения комментариев:

1. НЕ используйте 5-й рейд, сделайте десятый. Это обязательно, и сразу даст Вам очевидный эффект
2. Не делайте этого(!) не отрепетировав схему восстановления из бэкапов, или не проклинайте меня потом, пожалуйста:

http://wiki.centos.org/HowTos/Disk_Optimization

Конечно, не Gentoo, но советы дельные

3. Как уже сказали, тюньте innodb

4. Может лучше вообще выкинуть этот недоконтроллер и сделать рейд через mdraid? Он гораздо быстрее, чем многие "православные" аппаратные контроллеры с кэшем, защищенным батарейкой, но слабым чипом для обсчета операций
Сделайте десятый рейд через md, это может сразу же облегчить жизнь в разы