1 / 41

Производительность Cach é Оптимизация и мониторинг

Производительность Cach é Оптимизация и мониторинг. Дмитрий Носов «Школа Инноваций InterSystems 2007». Производительность. Аппаратное обеспечение. Операционная система. Caché. Приложение. Аппаратное обеспечение. Чем быстрее, тем лучше Память Процессоры Ввод/вывод

donagh
Download Presentation

Производительность Cach é Оптимизация и мониторинг

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Производительность CachéОптимизация и мониторинг Дмитрий Носов «Школа Инноваций InterSystems 2007»

  2. Производительность Аппаратное обеспечение Операционная система Caché Приложение

  3. Аппаратное обеспечение • Чем быстрее, тем лучше • Память • Процессоры • Ввод/вывод • 64-х разрядные платформы • Позволяют адресовать буферный пул > 2Гб • НО ! Вычисления могут работать даже медленней, чем на 32-х разрядных платформах

  4. Производительность Аппаратное обеспечение Операционная система Caché Приложение

  5. Операционная система • Виртуальная память • Фиксированный размер • Разные диски • Фоновые и активные задачи • Режим «Background Services» для Windows • Монитор производительности • Task Manager • perfmon.exe • Продукты третьих фирм (BMC Patrol, WMI) • Файловая система: производительность, надежность, размер файла • Для Windows – NTFS • Для Unix – выбор за Вами

  6. Производительность Аппаратное обеспечение Операционная система Caché Приложение

  7. Caché • Дисковая система • Память • Мониторинг • Дополнительно

  8. Caché- дисковая подсистема • Разбиение по контроллерам и дискам. • Баз данных • WIJ файл • Журнал • База данных CACHETEMP • Заранее установленный размер CACHE.DAT

  9. Caché– шифрование БД Шифрование базы данных ((# of blocks read) * (8192 bytes / block) * (30 CPU clock ticks / byte))/(# of CPU clock ticks / second) На машине с 1 Ггц процессором задержка в чтении 1 блока составит 0.24 милисекунды

  10. Caché- память • OS~ ??? Мб • Ядро Caché~ 16 Мб • ??? Мб на процесс * количество процессов = ??? • от 2Мб до 48Mб на процесс • Буфер программ – 32Кб/программу, max=64Кб • ^GLOSTAT - Routine Buffer Transfers • «Куча» (Heap) – системные таблицы Caché • Буфер для 8-ми и 2-х Кб баз данных

  11. 1 2 3 Optimal Caché- память • Буфер глобалов и виртуальная память

  12. Caché- память • Буфер глобалов выделяется автоматически, но можно и вручную

  13. Caché- мониторинг • Портал управления Caché + Task Manager + perfmon.exe • ^GLOSTAT • ^PERFMON • ^%SYS.MONLBL • ^mgstat • $SYSTEM.Monitor object- пользовательские параметры • CSTAT.exe

  14. Caché- мониторинг • Caché с версии 5.1 имеет Caché System Monitor • Сервис для сбора статистики • Генерация предупреждений • Оповещение по Email • Оповещение о системных ошибках • ~ 50 вариантов ошибочных ситуаций, например: ошибки записи в БД, ошибки журнала и т.п. • Позволяет создавать пользовательские классы для мониторинга

  15. ^GLOSTAT • Сбор статистики или куммулятивных или посекундных метрик производительности: • # обращений к глобалам • # журнальных записей • эффективность использования кеша

  16. ^GLOSTAT Statistics Total ------------------------------- ------------- Global references (all): 418,122 Global update references: 28,797 Routine calls: 27,600 Routine buffer loads and saves: 279 Routine lines: 44,481 Routine not cached: 408 Logical block requests: 128,029 Block reads: 650 Block writes: 128 WIJ writes: 58 Cache Efficiency: 537 Journal Entries: 9,036 Journal Block Writes: 16

  17. ^PERFMON ^PERFMON • Сбор метрик по • Процессам • Глобалам • Программам • Сети

  18. ^PERFMON - пример Global Activity by Global Started: 06/24/2004 02:43:30PM Collected: 06/24/2004 02:45:22PM Name Directory TotRefs % Refs GloSet GloKill BlkAlloc JrnEntry PhyBlkRd PhyBlkWrt LogBlkRd -------------- ------------------- --------- --------- --------- --------- --------- --------- --------- --------- --------- Other 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 SYS d:\cxxbeta\mgr\ 0.3 0.0 0.1 0.2 0.0 0.0 0.0 0.1 0.3 rOBJ ...ta\mgr\cachelib\ 7892.0 64.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ME.BalanceD d:\lehman\ 876.9 7.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 TIB.QueueIN d:\lehman\ 1753.8 14.3 1753.8 0.0 10.0 0.0 0.0 10.0 1793.8 SUPPORT.Mess...d:\lehman\ 876.9 7.1 0.0 0.0 0.0 0.0 0.0 0.0 886.3 TIMINGS d:\lehman\ 880.9 7.2 880.1 0.0 0.0 0.0 0.0 0.0 877.1 OBFillsD d:\lehman\ 2.4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 OBChangesD d:\lehman\ 2.4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

  19. ^PERFMON - пример Routine Activity by Routine Started: 06/24/2004 02:43:30PM Collected: 06/24/2004 02:45:22PM Name Directory M Lines % Lines RtnLoads RtnFetch Line/Load -------------- ------------------- --------- --------- --------- --------- --------- Other 0.0 0.0 0.0 0.0 0 PERFMON d:\cxxbeta\mgr\ 3.2 0.0 0.0 0.0 0 ME.Messages.1 d:\lehman\ 12285.3 20.0 2630.6 0.0 4.7 ME.Tools.1 d:\lehman\ 13153.5 21.4 876.9 0.0 15.0 SUPPORT.Tools.1d:\lehman\ 6144.7 10.0 876.9 0.0 7.0 ME.OrderReply.1d:\lehman\ 17537.5 28.6 6138.1 0.0 2.9 %ooLibrary.L......ta\mgr\cachelib\ 10522.5 17.1 3507.5 0.0 3.0 %ooLibrary.L......ta\mgr\cachelib\ 1753.8 2.9 1753.8 0.0 1.0

  20. ^%SYS.MONLBL • Сбор статистики • по времени исполнения каждой строки кода • # обращений к глобалу • # чтений блоков данных

  21. ^%SYS.MONLBL Routine ^ME.Messages.1 ... Line RtnLine Time 340 10000 .514164 set cnt = $i(^TIMINGS("OrderActionMessage","Records")) 341 10000 .12743 if cnt > 1000 { 342 9 .000319 set ^TIMINGS("OrderActionMessage","Records") = 0 343 9 .000227 set SClock = $get(^TIMINGS("OrderActionMessage","LClock")) 344 9 .000207 set EClock = $piece($ztimestamp,",",2) 345 9 .000096 if SClock '= "" { 346 8 .000131 set ClockDelta = EClock - SClock 347 8 .000195 if ClockDelta > 0 { 348 8 .000499 set ^TIMINGS("OrderActionMessage","Results",$i(^TIMINGS("OrderActionMessage","Results"))) = (jnk-1)/ClockDelta 349 8 .000094 } else { 350 0 0 set ^TIMINGS("OrderActionMessage","Results",$i(^TIMINGS("OrderActionMessage","Results"))) = "<No Time>" 351 0 0 } 352 8 .000068 } 353 9 .000251 set ^TIMINGS("OrderActionMessage","LClock") = EClock 354 9 .000086 } 355 10000 .094112 ;; Measurements <<< 356 10000 .094363 ;; Measurements <<< 357 10000 .106838 set BuyFlag = "BUY" 358 10000 .098118 set SellFlag = "SELL" 359 10000 .10122 set AskFlag = "ASK" 360 10000 .094529 set BidFlag = "BID"

  22. ^mgstat • Можно посмотреть статистику в течении дня s f="c:\a\c.txt" o f:"NW" w !,"opend" u f d ^mgstat

  23. Caché- мониторинг • BMC Patrol • www.bmc.com • Обеспечивает сбор и мониторинг общекорпоративной статистики, в т.ч. и статистики Caché

  24. Caché- мониторинг • Simple Network Management Protocol – SNMP • Windows Management Instrumentation - WMI

  25. Caché- дополнительно • ^GCOMPACT • Журналирование выделенных глобалов (до версии 5.1) • Partial WIJ (до версии 5.1) • 8 Кб базы данных • Масштабирование системы • Кластеры (Open VMS, Tru64Unix) • Многопроцессорные системы • ECP • Shadow Server для аналитической обработки данных

  26. Производительность Аппаратное обеспечение Операционная система Caché Приложение

  27. Приложение • Блоки данных • Блокировки • Программы • Локалы или глобалы? • Синтаксис COS • Objects • SQL

  28. Блоки данных • Распределение данных по глобалам • не хранить обычные и агрегированные данные в одной глобали • Расщепление блоков (Block Split) • 8k и 2k блоки • $SortBegin& $SortEnd • CACHETEMP – In-Memory Database • Временные данные • Нет журналирования • Пакетные задания, вымывание буфера • $ZU(68,25,…) • Приоритет процессов • %PRIO

  29. Блокировки • «Горячие» блокировки • $Increment • %OpenId(id,Concurency) • Shared& Exclusive lock • Immediate unlock

  30. Программы • Внутренний вызов намного быстрее внешнего • В Caché 2007.1 полностью переработан механизм обработки стека программ и повышена производительность обработки стека программ • Наиболее часто используемые ищутся быстрей • Изменено управление буфером программ • Изменено управление стеком программ (возврат по стеку возвращает управление старому коду, если он менялся)

  31. Переменные • Локальные или глобальные ? • Если много, то • ^CacheTempXXX($j,…) • ^mtempXXX($j,…) • Process Private Globals- ^||globals • Глобалы, видные только процессам, их породившим • Удаляются вместе с процессом • Производительность глобалов, смепированных в CACHTEMP • Размер неограничен в отличии от локальных переменных

  32. Новый синтаксис • $Increment • $ListBuild vs $Piece • $Case • ||, && • $Order • Минимизация количества строк • $ListNext • $ListNext(list, ptr, val) быстрее в 400 раз, чем цикл с $List

  33. Caché Objects • Новое в 5.2 - Version Checking • Позволяет определить свойство, которое будет хранить версию объекта через параметр класса VERSIONPROPERTY • Полезно для оптимистической конкуренции многопользовательского доступа к объектам

  34. Caché SQL • Индексы, BitMap • SSN FROM MyTable WHERE Name LIKE :Param1 AND Age>:Param2 • Индексы по Name & Age увеличат скорость выбора, но уменьшат скорость транзакций • Bitslicing Index • SELECTSUM(f) FROMt • использует bitsliceindex по t.f в 5.1 • В 2007.1 к этому добавятся дополнительные запросы.

  35. Caché SQL Selectivity, ExtentSize - $system.SQL.TuneTable() • Selectivity = %строк или количество, которые удовлетворяют заданному значению. • Selectivity поля Gender (род) будет= 50% • Selectivity для уникального значения = 1 • В таблице из 100 записей SSN будет = 1% • Extent Size = ориентировочное количество строк в таблице • INNER JOIN для двух таблиц ищет таблицу с минимальным количеством строк. • Два варианта настроить Selectivity & ExtentSize 1) Портал управления 2)Do $system.SQL.TuneTable("Index.Person",1,1) • Значения, возвращаемые TuneTable могут быть перезаписаны приложением

  36. Caché SQL - TuneTable USER>d $system.SQL.TuneTable("Index.Person",1,1) TABLE: Index.Person Current Extentsize = 100000 Calculated Extentsize = 20 Updated FIELD: Boss Current Selectivity = <Not Specified> Calculated Selectivity = 50.0000% Table definition updated. Class definition updated. FIELD: City Current Selectivity = <Not Specified> Calculated Selectivity = 9.0909% Table definition updated. Class definition updated.

  37. Caché SQL • %FULL, %INORDER (5.0) • %inorderуказывает оптимизаторупуть выполнения операции JOIN в необходимом порядке. • %fullдает задачу оптимизатору проверить все возможные альтернативы путей выполнения запросов. • Рекомендуется для Embedded SQL и Class’ SQL Queries, где время компиляции не столь критично

  38. Caché SQL • %NOCHECK, %NOLOCK, %NOINDEX, %NOTRIGGER • Рекомендуется применять в случаях массовой загрузки данных в однопользовательском режиме в случае гарантированной целостности создаваемых данных

  39. Caché SQL • Просмотр кода кэшируемых запросов - Query Analysis Tool • Позволяет посмотреть план выполнения SQL запроса

  40. Caché SQL • Хранимые процедуры + прямой доступ • Используя прямой доступ в хранимых процедурах можно в несколько раз повысить производительность получения данных

  41. Спасибо за внимание! Вопросы? Дмитрий Носов «Школа Инноваций InterSystems 2007»

More Related