Alexander Krizhanovsky Krizhanovsky Hpds

712 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
712
On SlideShare
0
From Embeds
0
Number of Embeds
193
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Alexander Krizhanovsky Krizhanovsky Hpds

  1. 1. Высокопроиз-водительные сиситемы хранения
  2. 2. Содержание <ul><li>Кэширование и ввод-вывод в современных СУБД (MySQL InnoDB)
  3. 3. Page cache и планировщик ввода-вывода в Linux 2.6
  4. 4. Non-ACID хранилище на основе Linux page cache </li></ul>
  5. 5. MySQL InnoDB: кэши <ul><li>Собственный data cache (O_DIRECT) </li></ul>
  6. 6. MySQL InnoDB: ввод-вывод <ul><li>------ </li></ul>
  7. 7. Linux: page cache <ul><li>Собственный data cache (O_DIRECT) </li></ul>
  8. 8. Linux: vmscan Сбросом грязных страниц занимаются (???) <ul><li>Kswapd : когда почти уже не осталось памяти
  9. 9. Pdflush : сброс грязных страниц </li></ul>Эта часть ядра Linux активно разрабатывается, поэтому возможны проблемы при «необычных» нагрузках
  10. 10. Linux: IO scheduler <ul><li>Уровень блочного ввода-вывода (между ФС и драйвером устройства)
  11. 11. Накапливает, переупорядочивает и отдает на ввод-вывод драйверу запросы ввода-вывода </li></ul>
  12. 12. ОС & СУБД <ul><li>Дублирование механизмов кэширования данных
  13. 13. Дублирование планирования ввода-вывода
  14. 14. Двойное индексирование блоков данных в БД и ФС </li></ul>
  15. 15. Linux: mmap() <ul><li>В большинстве случаев сопровождается выделением новой VMA (Virtual Memory Area)
  16. 16. Zero-copying (страницы сбрасываются на диск без копирования) </li></ul>
  17. 17. Linux: x86-64 <ul><li>Можно адресовать 128TB в user space (32M страниц 4KB)
  18. 18. При этом расходы на page table - ~256GB RAM
  19. 19. Если использовать Hugetlbfs с 2MB страницами, то pagetable будет занимать всего 512MB
  20. 20. Можно использовать 1GB страницы
  21. 21. Для больших страниц процессоры используют отдельный (не больщой) TLB cache </li></ul>
  22. 22. Non-ACID HP storage: задачи <ul><li>Высокая производительность на сильно нелокализованных данных
  23. 23. Быстрота реализации
  24. 24. Относительная надежность (возможность восстановления данных)
  25. 25. Простая модель данных (мало зависимостей по данным) </li></ul>
  26. 26. Non-ACID HP storage: архитектура <ul><li>Вся база данных mmap() 'ится небольшими кусками (extents) в память
  27. 27. Старые экстенты периодически принудительно сбрасываются на диск ( munmap() ) для очистки page table
  28. 28. Pdflush автоматически сбрасывает наименее грячие страницы
  29. 29. IO scheduler планирует очередность записи </li></ul>
  30. 30. Non-ACID HP storage: целостность <ul><li>Мы больше не контролируем очередность записи на диск при гранулярности выше 512 байт (физического блока данных)
  31. 31. Целостность можно обеспечить только избыточной записью в переделах 512 байт
  32. 32. Для каждого блока считаются контрольные суммы
  33. 33. На старте, в случае некорректного завершения работы, проверяется консистентность
  34. 34. Индекс можно восстановить из данных </li></ul>
  35. 35. Спасибо! <ul>[email_address] </ul>

×