DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Выявление ошибки квантования


Ошибка квантования = em - ea - это разность между реальной про­должительностью события ea и его измеренной продолжительностью em. У вас нет возможности узнать реальную продолжительность собы­тия, следовательно, нельзя и обнаружить ошибку квантования, основываясь на отдельном значении. Однако можно доказать наличие ошибки квантования, исследуя группы родственных статистик. Мы уже рассматривали пример, в котором удалось выявить ошибку кван­тования. В примере 7.5 наличие ошибки квантования удалось опреде­лить, заметив, что:

Ошибку квантования легко выявить, исследуя вызов базы данных и выполняемые им события ожидания в системе с низкой загрузкой, где минимизировано влияние других факторов, способных нарушить отношение e и c + Eela.
Рассмотрим фрагмент файла трассировки Oracle8i, который демонст­рирует эффект ошибки квантования:
Данный вызов выборки инициировал ровно три события ожидания. Мы знаем, что приведенные значения c, e и ela должны быть связаны таким приблизительным равенством:
В системе с низкой загрузкой величина, на которую отличаются левая и правая части приблизительного равенства, указывает на общую ошибку квантования, присутствующую в пяти измерениях (одно зна­чение c, одно значение e и три значения ela):
С учетом того, что отдельному вызову gettimeofday в большинстве сис­тем соответствует лишь несколько микросекунд ошибки, вызванной влиянием измерителя, получается, что ошибка квантования вносит значительный вклад в «разность» длиной в одну сантисекунду в дан­ных трассировки.
Следующий фрагмент файла трассировки Oracle8демонстрирует про­стейший вариант избыточного учета продолжительности, в результате которого возникает отрицательная величина неучтенного времени:
WAIT #96: nam='db file sequential read' ela= 0 p1=1 p2=1691 p3=1
FETCH #96:c=1,e=0,p=1,cr=4,cu=0,mis=0,r=1,dep=1,og=4,tim=116694789 В данном случае = -1 сантисекунда:
При наличии «отрицательной разности» (подобного только что рас­смотренному) невозможно все объяснить эффектом влияния измерите­ля, ведь этот эффект может быть причиной появления только положи­тельных значений неучтенного времени. Можно было бы подумать, что имел место двойной учет использования процессора, но и это не соответ­ствует действительности, т. к. нулевое значение ela свидетельствует о том, что время занятости процессора вообще не учитывалось для со­бытия ожидания. В данном случае ошибка квантования имеет преобла­дающее влияние и приводит к излишнему учету времени для выборки.
В данном случае = 640 мкс:
В Oracle9i разрешение временной статистики улучшено, но и эта вер­сия отнюдь не защищена от воздействия ошибки квантования, что видно в предложенном ниже фрагменте файла трассировки для > 0:
Некоторая часть этой ошибки, несомненно, является ошибкой кванто­вания (невозможно, чтобы общее время использования процессора данной выборкой действительно равнялось нулю). Несколько микро­секунд следует отнести на счет эффекта влияния измерителя.
Наконец, рассмотрим пример ошибки квантования < 0 в данных трассировки Oracle9i:
Возможно, в данном случае имел место двойной учет использования процессора. Также вероятно, что именно ошибка квантования внесла основной вклад в полученное время вызова выборки. Избыточный учет 8784 микросекунд говорит о том, что фактический общий расход процессорного времени вызовом базы данных составил, вероятно, все­го около (10000 - 8784) мкс = 1,216 мкс.
Диапазон значений ошибки квантования
Величину ошибки квантования, содержащейся во временных стати­стиках Oracle, нельзя измерить напрямую. Зато можно проанализиро­вать статистические свойства ошибки квантования в данных расширен­ной трассировки SQL. Во-первых, величина ошибки квантования для конкретного набора данных трассировки ограничена сверху. Легко представить ситуацию, в которой ошибка квантования, вносимая таки­ми характеристиками продолжительности, как e и ela, будет максимальной. Наибольшего значения данная ошибка достигает в том слу­чае, когда в последовательности значений e и ela все отдельные ошибки квантования имеют максимальную величину и их знаки совпадают.
На рис. 7.9 показан пример возникновения описанной ситуации: име­ется восемь очень непродолжительных системных вызовов, причем все они попадают на такты интервального таймера. Фактическая дли­тельность каждого события близка к нулю, но измеренная длитель­ность каждого такого события равна одному такту системного тайме­ра. В итоге суммарная фактическая продолжительность всех вызовов близка к нулю, а общая измеренная продолжительность равна 8 так­там. Для такого набора из = 8 системных вызовов ошибка квантова­ния по существу равна nrx, где rx - это разрешение интервального тай­мера, с помощью которого измеряется характеристика x.
Думаю, вы обратили внимание, что изображенный на рис. 7.9 случай выглядит надуманно и изобретен исключительно для прояснения во­проса. В реальной жизни подобная ситуация чрезвычайно маловероят­на. Вероятность, что ошибок квантования будут иметь одинаковые знаки, равна всего 0,5n. Вероятность того, что n=8 последовательных
Рис. 7.9. Наихудший вариант накопления ошибки квантования для последовательности измеренных продолжительностей
ошибок квантования будут отрицательными, равна всего 0,00390625 (т. е. приблизительно четыре шанса из тысячи). Для 266 значений шанс совпадения знаков у всех ошибок квантования меньше, чем один из 1080.
Для больших наборов значений длительностей совпадение знаков всех ошибок квантования практически невозможно. Но это не единственное, в чем состоит надуманность ситуации, изображенной на рис. 7.9. Она также предполагает, что абсолютная величина каждой ошибки кванто­вания максимальна. Шансы наступления такого события еще более ил­люзорны, чем у совпадения всех знаков ошибок. Например, вероятность того, что величина каждой из имеющихся ошибок квантования пре­вышает 0,9, равна (1 - 0,9)n. Вероятность того, что величина каждой из = 266 ошибок квантования превысит 0,9, составляет всего 1 из 10266.
Вероятность того, что все ошибок квантования имеют одинаковый знак и абсолютная величина всех из них больше m, чрезвычайно мала и равна произведению рассмотренных ранее вероятностей:
P (значения всех n ошибок квантования больше m или меньше -m)=
= (0.5)n(1- m)n
Ошибки квантования для продолжительностей (например, значений e и ela в Oracle) - это случайные числа в диапазоне:
-rx < < rx где rx - это разрешение интервального таймера, с помощью которого измеряется характеристика x (x- это e или ela).
Так как положительные и отрицательные ошибки квантования возни­кают c равной вероятностью, средняя ошибка квантования для вы­бранного набора статистик стремится к нулю даже для больших фай­лов трассировки. Опираясь на теорему Лапласа (Pierre Simon de Lapla­ce, 1810), можно предсказать вероятность того, что ошибки квантова­ния для статистик e и ela будут превышать указанное пороговое значение для файла трассировки, содержащего определенное количе­ство статистик.
Я начал работать над вычислением вероятности того, что общая ошиб­ка квантования файла трассировки (включая ошибку, вносимую ста­тистикой c) будет превышать заданную величину, однако мое исследо­вание еще не завершено. Мне предстоит получить распределение ошибки квантования для статистики c, что, как я уже говорил, ослож­няется особенностями получения этой статистики в процессе опроса. Результаты этих изысканий планируется воплотить в одном из буду­щих проектов.
К счастью, относительно ошибки квантования есть и оптимистиче­ские соображения, которые позволяют не слишком расстраиваться по поводу невозможности определения ее величины:
•   Во многих сотнях файлов трассировки Oracle, проанализирован­ных нами в hotsos.comобщая продолжительность неучтенного вре-

Что означает «один шанс из десяти в [очень большой] степени»?
Для того чтобы представить себе, что такое «один шанс из 1080», заду­майтесь над следующим фактом: ученые утверждают, что в наблюдае­мой вселенной содержится всего около 1080 атомов (по данным http:// www.sunspot.noao.edu/sunspot/pr/answerbook/universe.html#q70, http:/ /www.nature.com/nsu/020527/020527-16.html и др.). Это означает, что если бы вам удалось написать на каждом атоме нашей вселенной 266 равномерно распределенных случайных чисел от -1 до +1, то лишь на одном из этих атомов можно было бы ожидать наличия всех 266 чи­сел с одинаковым знаком.
Представить вторую упомянутую вероятность - «один шанс из 10266»-еще труднее. На этот раз представим себе три уровня вложенных все­ленных. То есть что каждый из 1080 атомов нашей вселенной сам по себе является вселенной, состоящей из 1080 вселенных, каждая из которых в свою очередь содержит 1080 атомов. Теперь у нас достаточно атомов для того, чтобы представить себе возможность возникновения ситуации с вероятностью «один из 10240». Даже во вселенных третьего уровня вло­женности вероятность появления атома, для которого все 266 его слу­чайных чисел по абсолютной величине больше 0,9, составит один из 100 000 000 000 000 000 000 000 000.
мени в случае корректного сбора данных (см. главу 6) чрезвычайно редко превышала 10% общего времени отклика.
Несмотря на то, что и ошибка квантования, и двойной учет исполь­зования процессора могут привести к такому результату, файл трассировки чрезвычайно редко содержит отрицательное неучтен­ное время, абсолютная величина которого превышала бы 10% об­щего времени отклика.
В случаях, когда неучтенное время оценивается более чем в 25% времени отклика для корректно собранных данных трассировки, такой объем неучтенного времени почти всегда объясняется одним из двух явлений, описанных в последующих разделах.
Наличие ошибки квантования не лишает нас возможности пра­вильно диагностировать основные причины проблем производи­тельности при помощи файлов расширенной трассировки SQL в Or­acle (даже в файлах трассировки Oracle8i, в которых вся статистика приводится с точностью лишь до сотых долей секунды).
Ошибка квантования становится еще менее значимой в Oracle9благодаря повышению точности измерений.
В некоторых случаях влияние ошибки квантования способно привес­ти к утрате доверия к достоверности данных трассировки Oracle. На­верное, ничто не может так подорвать боевой дух, как подозрение в не­достоверности данных, на которые вы полагаетесь. Думаю, что луч­шим средством, призванным укрепить веру в получаемые данные, должно служить четкое понимание влияния ошибки квантования.

 









jAntivirus