The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




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

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

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

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

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

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

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

  • Дисковый кеш (на запись), !*! Doka, 22:58 , 30-Мрт-10 (1)
    >Есть сервер БД (MySQL) с RAID-контроллером от Compaq, который принципиально не поддерживает
    >кеширование записи.

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


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

      Compaq Computer Corporation Smart Array 5i/532

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

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

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

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

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

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

          копнул.

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

          • Дисковый кеш (на запись), !*! Andrey Mitrofanov, 13:42 , 31-Мрт-10 (7)
            >видно. а видно одно устройство - /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, 14:39 , 31-Мрт-10 (8)
              >>видно. а видно одно устройство - /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, 12:31 , 16-Апр-10 (13)

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

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

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

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

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

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

  • Дисковый кеш (на запись), !*! anonymous, 02:51 , 31-Мрт-10 (2)
    покажите настройки mysql (и версии, версии назовите!).
    • Дисковый кеш (на запись), !*! IVB, 10:39 , 31-Мрт-10 (4)
      >покажите настройки mysql (и версии, версии назовите!).

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

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

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


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

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

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

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

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

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

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

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

          ОК, спасибо.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            удачи!

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

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

                • Дисковый кеш (на запись), !*! sdog, 18:48 , 16-Апр-10 (22)
                  >>да, не контролере 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, 18:59 , 16-Апр-10 (23)
                    >>>да, не контролере raid'а (если с батарейкой) обязательно включите write cache :)
                    >>>ещё базы любят память - innodb_buffer_pool_size - 70-80% от общего объёма
                    >>>памяти
                    >>
                    >>В моем 1-м посте, в 1-й строке как раз написано о том,
                    >>что контроллер не поддерживает write cache
                    >
                    >Тогда советую проапгрейдится до Smart Array 5i Plus

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

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

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

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

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

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

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

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

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

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

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

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру