Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемГерасим Рысев
1 Производительность Caché Оптимизация и мониторинг Дмитрий Носов «Школа Инноваций InterSystems 2007»
2 Производительность Операционная система CachéCaché ПриложениеПриложение Аппаратное обеспечение
3 Чем быстрее, тем лучше Чем быстрее, тем лучше –Память –Процессоры –Ввод/вывод 64-х разрядные платформы 64-х разрядные платформы –Позволяют адресовать буферный пул > 2Гб –НО ! Вычисления могут работать даже медленней, чем на 32-х разрядных платформах
4 Производительность Операционная система CachéCaché ПриложениеПриложение Аппаратное обеспечение
5 Операционная система Виртуальная память Виртуальная память –Фиксированный размер –Разные диски Фоновые и активные задачи Фоновые и активные задачи –Режим «Background Services» для Windows Монитор производительности Монитор производительности –Task Manager –perfmon.exe –Продукты третьих фирм (BMC Patrol, WMI) Файловая система: производительность, надежность, размер файла Файловая система: производительность, надежность, размер файла –Для Windows – NTFS –Для Unix – выбор за Вами
6 Производительность Операционная система CachéCaché ПриложениеПриложение Аппаратное обеспечение
7 Caché Дисковая система Дисковая система Память Память Мониторинг Мониторинг Дополнительно Дополнительно
8 Caché - дисковая подсистема Разбиение по контроллерам и дискам. Разбиение по контроллерам и дискам. –Баз данных –WIJ файл –Журнал –База данных CACHETEMP Заранее установленный размер CACHE.DAT Заранее установленный размер CACHE.DAT
9 Caché – шифрование БД Шифрование базы данных ((# of blocks read) * (8192 bytes / block) * (30 CPU clock ticks / byte)) / (# of CPU clock ticks / second) ((# of blocks read) * (8192 bytes / block) * (30 CPU clock ticks / byte)) / (# of CPU clock ticks / second) На машине с 1 Ггц процессором задержка в чтении 1 блока составит 0.24 милисекунды
10 Caché- память OS ~ ??? Мб OS ~ ??? Мб Ядро Caché ~ 16 Мб Ядро Caché ~ 16 Мб ??? Мб на процесс * количество процессов = ??? ??? Мб на процесс * количество процессов = ??? – от 2Мб до 48 Mб на процесс Буфер программ – 32Кб/программу, max=64Кб Буфер программ – 32Кб/программу, max=64Кб –^GLOSTAT - Routine Buffer Transfers «Куча» (Heap) – системные таблицы Caché «Куча» (Heap) – системные таблицы Caché Буфер для 8-ми и 2-х Кб баз данных Буфер для 8-ми и 2-х Кб баз данных
11 Caché - память Буфер глобалов и виртуальная память Буфер глобалов и виртуальная память 123 Optimal
12 Caché - память Буфер глобалов выделяется автоматически, но можно и вручную Буфер глобалов выделяется автоматически, но можно и вручную
13 Caché - мониторинг Портал управления Caché + Task Manager + perfmon.exe Портал управления Caché + Task Manager + perfmon.exe ^GLOSTAT ^GLOSTAT ^PERFMON ^PERFMON ^%SYS.MONLBL ^%SYS.MONLBL ^mgstat ^mgstat $SYSTEM.Monitor object - пользовательские параметры $SYSTEM.Monitor object - пользовательские параметры CSTAT.exe CSTAT.exe
14 Caché - мониторинг Caché с версии 5.1 имеет Caché System Monitor Caché с версии 5.1 имеет Caché System Monitor –Сервис для сбора статистики –Генерация предупреждений –Оповещение по Оповещение о системных ошибках Оповещение о системных ошибках –~ 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 Global Activity by Global Started: 06/24/ :43:30PM Collected: 06/24/ :45:22PM Name Directory TotRefs % Refs GloSet GloKill BlkAlloc JrnEntry PhyBlkRd PhyBlkWrt LogBlkRd Other SYS d:\cxxbeta\mgr\ rOBJ...ta\mgr\cachelib\ ME.BalanceD d:\lehman\ TIB.QueueIN d:\lehman\ SUPPORT.Mess...d:\lehman\ TIMINGS d:\lehman\ OBFillsD d:\lehman\ OBChangesD d:\lehman\
19 ^PERFMON - пример Routine Activity by Routine Routine Activity by Routine Started: 06/24/ :43:30PM Collected: 06/24/ :45:22PM Name Directory M Lines % Lines RtnLoads RtnFetch Line/Load Name Directory M Lines % Lines RtnLoads RtnFetch Line/Load Other PERFMON d:\cxxbeta\mgr\ ME.Messages.1 d:\lehman\ ME.Tools.1 d:\lehman\ SUPPORT.Tools.1d:\lehman\ ME.OrderReply.1d:\lehman\ %ooLibrary.L......ta\mgr\cachelib\ %ooLibrary.L......ta\mgr\cachelib\
20 ^%SYS.MONLBL Сбор статистики Сбор статистики –по времени исполнения каждой строки кода –# обращений к глобалу –# чтений блоков данных
1000 { 342 9.000319 set ^TIMINGS("OrderActionMessage","Records") = 0 343 9.000227 set SClock = $" title="^%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 = $" class="link_thumb"> 21 ^%SYS.MONLBL Routine ^ME.Messages.1... Line RtnLine Time set cnt = $i(^TIMINGS("OrderActionMessage","Records")) if cnt > 1000 { set ^TIMINGS("OrderActionMessage","Records") = set SClock = $get(^TIMINGS("OrderActionMessage","LClock")) set EClock = $piece($ztimestamp,",",2) if SClock '= "" { set ClockDelta = EClock - SClock if ClockDelta > 0 { set ^TIMINGS("OrderActionMessage","Results",$i(^TIMINGS("OrderActionMessage","Results"))) = (jnk-1)/ClockDelta } else { set ^TIMINGS("OrderActionMessage","Results",$i(^TIMINGS("OrderActionMessage","Results"))) = " " } } set ^TIMINGS("OrderActionMessage","LClock") = EClock } ;; Measurements 1000 { 342 9.000319 set ^TIMINGS("OrderActionMessage","Records") = 0 343 9.000227 set SClock = $"> 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"))) = " " 351 0 0 } 352 8.000068 } 353 9.000251 set ^TIMINGS("OrderActionMessage","LClock") = EClock 354 9.000086 } 355 10000.094112 ;; Measurements "> 1000 { 342 9.000319 set ^TIMINGS("OrderActionMessage","Records") = 0 343 9.000227 set SClock = $" title="^%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 = $">
22 ^mgstat Можно посмотреть статистику в течении дня Можно посмотреть статистику в течении дня s f="c:\a\c.txt" o f:"NW" w !,"opend" u f d ^mgstat
23 Caché - мониторинг BMC Patrol BMC Patrol – –Обеспечивает сбор и мониторинг общекорпоративной статистики, в т.ч. и статистики Caché
24 Caché - мониторинг Simple Network Management Protocol – SNMP Simple Network Management Protocol – SNMP Windows Management Instrumentation - WMI Windows Management Instrumentation - WMI
25 Caché - дополнительно ^GCOMPACT ^GCOMPACT Журналирование выделенных глобалов (до версии 5.1) Журналирование выделенных глобалов (до версии 5.1) Partial WIJ (до версии 5.1) Partial WIJ (до версии 5.1) 8 Кб базы данных 8 Кб базы данных Масштабирование системы Масштабирование системы –Кластеры (Open VMS, Tru64Unix) –Многопроцессорные системы –ECP –Shadow Server для аналитической обработки данных
26 Производительность Операционная система CachéCaché ПриложениеПриложение Аппаратное обеспечение
27 Приложение Блоки данных Блоки данных Блокировки Блокировки Программы Программы Локалы или глобалы? Локалы или глобалы? Синтаксис COS Синтаксис COS Objects Objects SQL SQL
28 Блоки данных Распределение данных по глобалам Распределение данных по глобалам –не хранить обычные и агрегированные данные в одной глобали Расщепление блоков (Block Split) Расщепление блоков (Block Split) –8k и 2k блоки –$SortBegin & $SortEnd CACHETEMP – In-Memory Database CACHETEMP – In-Memory Database –Временные данные –Нет журналирования Пакетные задания, вымывание буфера Пакетные задания, вымывание буфера –$ZU(68,25,…) Приоритет процессов Приоритет процессов –%PRIO
29 Блокировки «Горячие» блокировки «Горячие» блокировки $Increment $Increment %OpenId(id,Concurency) %OpenId(id,Concurency) Shared & Exclusive lock Shared & Exclusive lock Immediate unlock Immediate unlock
30 Программы Внутренний вызов намного быстрее внешнего Внутренний вызов намного быстрее внешнего В Caché полностью переработан механизм обработки стека программ и повышена производительность обработки стека программ В Caché полностью переработан механизм обработки стека программ и повышена производительность обработки стека программ –Наиболее часто используемые ищутся быстрей –Изменено управление буфером программ –Изменено управление стеком программ (возврат по стеку возвращает управление старому коду, если он менялся)
31 Переменные Локальные или глобальные ? Локальные или глобальные ? Если много, то Если много, то –^CacheTempXXX($j,…) –^mtempXXX($j,…) Process Private Globals - ^||globals Process Private Globals - ^||globals –Глобалы, видные только процессам, их породившим –Удаляются вместе с процессом –Производительность глобалов, смепированных в CACHTEMP –Размер неограничен в отличии от локальных переменных
32 Новый синтаксис $Increment $Increment $ListBuild vs $Piece $ListBuild vs $Piece $Case $Case ||, && ||, && $Order $Order Минимизация количества строк Минимизация количества строк $ListNext $ListNext –$ListNext(list, ptr, val) быстрее в 400 раз, чем цикл с $List
33 Caché Objects Новое в Version Checking Новое в Version Checking –Позволяет определить свойство, которое будет хранить версию объекта через параметр класса VERSIONPROPERTY –Полезно для оптимистической конкуренции многопользовательского доступа к объектам
34 Caché SQL Индексы, BitMap Индексы, BitMap –SSN FROM MyTable WHERE Name LIKE :Param1 AND Age>:Param2 Индексы по Name & Age увеличат скорость выбора, но уменьшат скорость транзакцийИндексы по Name & Age увеличат скорость выбора, но уменьшат скорость транзакций Bitslicing Index Bitslicing Index –SELECT SUM(f) FROM t использует bitslice index по t.f в 5.1использует bitslice index по t.f в 5.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 = Calculated Extentsize = 20 Updated FIELD: Boss Current Selectivity = Calculated Selectivity = % Table definition updated. Class definition updated. FIELD: City Current Selectivity = Calculated Selectivity = % Table definition updated. Class definition updated.
37 Caché SQL %FULL, %INORDER (5.0) %FULL, %INORDER (5.0) %inorder указывает оптимизаторупуть выполнения операции JOIN в необходимом порядке. %inorder указывает оптимизаторупуть выполнения операции JOIN в необходимом порядке. %full дает задачу оптимизатору проверить все возможные альтернативы путей выполнения запросов. %full дает задачу оптимизатору проверить все возможные альтернативы путей выполнения запросов. Рекомендуется для Embedded SQL и Class SQL Queries, где время компиляции не столь критичноРекомендуется для Embedded SQL и Class SQL Queries, где время компиляции не столь критично
38 Caché SQL %NOCHECK, %NOLOCK, %NOINDEX, %NOTRIGGER %NOCHECK, %NOLOCK, %NOINDEX, %NOTRIGGER –Рекомендуется применять в случаях массовой загрузки данных в однопользовательском режиме в случае гарантированной целостности создаваемых данных
39 Caché SQL Просмотр кода кэшируемых запросов - Query Analysis Tool Просмотр кода кэшируемых запросов - Query Analysis Tool –Позволяет посмотреть план выполнения SQL запроса
40 Caché SQL Хранимые процедуры + прямой доступ Хранимые процедуры + прямой доступ –Используя прямой доступ в хранимых процедурах можно в несколько раз повысить производительность получения данных
41 Спасибо за внимание! Вопросы? Дмитрий Носов «Школа Инноваций InterSystems 2007»
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.