Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix 10 onstsat -p %cache / 13 сообщений из 13, страница 1 из 1
17.07.2007, 14:42
    #34664301
ak-47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
Есть непонятка с отображением %кеширования записи в Informix 10

В справочной системе IBM (поиск по onstat -p) читаем
http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp

IBM%cached
Is the percent of reads cached, calculated as follows:

100 * (bufreads - dskreads) / bufreads
..................
%cached
Is the percent of writes cached, calculated as follows:

100 *(bufwrits - dskwrits) / bufwrits

до IDS 10 так и было. В IDS 10 %cache reads - правильно, %cache writes - НЕ правильно.
В чем прикол? Что изменилось?
Проверено на IDS 10 UC5, IDS 10 UC3R1TL

Скрин приложен.
...
Рейтинг: 0 / 0
17.07.2007, 14:45
    #34664318
ak-47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
авторСкрин приложен.
...
Рейтинг: 0 / 0
17.07.2007, 15:39
    #34664539
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
Вот уж чего никогда не делал, так это не проверял правильность цифр в onstat -p и процент кеширования в том числе. А, оказывается, и здесь может быть "подстава"...
А если посчитать самому, т.е. взять цифры из sysprofile, то результат будет сопадать ?
Ниже подсокращенный SQL для расчета (см. __writes_cashed):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
-------------------------------------------------
--  READ-WRITE operations (System profile)
--  (whole instance)
--
-- V.Shulzhenko DBA_Tools Last modify: 2007-04-05
-------------------------------------------------
set isolation to dirty read;
select  
   '===== Reads-Writes Profile ====' ______________
  ,DBINFO('dbhostname') hostname 
  ,(select cf_effective from sysconfig where cf_name='DBSERVERNAME')    dbserver_name    
  ,current year to second - 
    EXTEND(dbinfo('utc_to_datetime',sh_pfclrtime),year to second)      statistic_time
  ,'-------------------------------' ______________
        ,'-- Buffers read-write --' __________
        ,(select value from sysprofile where name='bufreads')           buf_reads
        ,round((select value from sysprofile where name='bufreads')/
         (sh_curtime-sh_pfclrtime), 2 )                                   _buf_reads_psec
        ,(select value from sysprofile where name='bufwrites')          buf_writes
        ,round((select value from sysprofile where name='bufwrites')/
         (sh_curtime-sh_pfclrtime), 2 )                                   _buf_writes_psec
        ,round((select value from sysprofile where name='bufreads')/
         ((select value from sysprofile where name='bufwrites')+
         (select value from sysprofile where name='bufreads'))* 100 , 2 )   __buf_rd2wr_ratio
        ,(select value from sysprofile where name='buffwts')            buff_waits
-- Bufwaits Ratio (BR): ((bufwaits/(pagreads + bufwrits)) * 100)  - Goal is < 7%
        ,round((select value from sysprofile where name='buffwts')/
               ((select value from sysprofile where name='pagreads')+
                (select value from sysprofile where name='bufwrites'))* 100 , 2 ) __bufwaits_ratio  
        ,'-- Reads (disk) --' __________
        ,round(( 1 -((select value from sysprofile where name='dskreads')/
                (select value from sysprofile where name='bufreads')))* 100 , 2 ) __reads_cashed
        ,(select value from sysprofile where name='dskreads')           disk_reads
        ,(select value from sysprofile where name='pagreads')           page_reads
        ,round((select value from sysprofile where name='pagreads')/
         (sh_curtime-sh_pfclrtime)*sh_pagesize/ 1024 , 2 )                  _KB_reads_psec
        ,'-- Writes (disk) --' __________
        ,round(( 1 -((select value from sysprofile where name='dskwrites')/
                (select value from sysprofile where name='bufwrites')))* 100 , 2 ) __writes_cashed
        ,(select value from sysprofile where name='dskwrites')          disk_writes
        ,(select value from sysprofile where name='pagwrites')          page_writes
        ,round((select value from sysprofile where name='pagwrites')/
         (sh_curtime-sh_pfclrtime)*sh_pagesize/ 1024 , 2 )                  _KB_writes_psec
        ,'--Type_writes--' __________
        ,round((select value from sysprofile where name='pagreads')/
               ((select value from sysprofile where name='pagreads')+
                (select value from sysprofile where name='pagwrites'))* 100 , 2 )   _page_rd2wr_ratio
from sysshmvals;
...
Рейтинг: 0 / 0
17.07.2007, 15:50
    #34664583
ak-47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
авторА если посчитать самому, т.е. взять цифры из sysprofile, то результат будет сопадать ?
Нет. В sysprofile те же значения, что в onstat -p (собственно он их от туда и берет наверное)
...
Рейтинг: 0 / 0
17.07.2007, 16:12
    #34664710
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
Кстати, если эти статистические данные за очень большой период (или очень интенсивная нагрузка сервера), то кол-во чт/зап из буферов будут переходить макс. значение для int (2млр.197млн....) и начнет показывать не верные (в обычном понимании) цифоы.
Проверьте этот вариант, т.е. сбросить данные (onstat -z) и снова помониторить и проверить расчет. Если ошибка все равно останется, то я "снимаю шляпу" перед индусами :) которые умудрились в такой простой формуле сделать такую хитрую ошибку.
...
Рейтинг: 0 / 0
17.07.2007, 16:35
    #34664801
ak-47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
Есть небольшая разница:
До IDS 10 значения sysprofile действительно когда доходили до граничного значения int, то продолжались в отрицательную сторону, но эти значения можно перечитать и получить значение показываемое onstat -p. Тем более, что onstat -p показывает всегда правильно (без отриц. значений)
В IDS 10 поле в sysshmhdr (откуда берет значения sysprofile) имеет тип INT8. Т.е. отрицательных значений я там не видел.
onstat -z делал - все тоже самое.
авторЕсли ошибка все равно останется, то я "снимаю шляпу" перед индусами :) которые умудрились в такой простой формуле сделать такую хитрую ошибку.
Честноговоря, до сих пор не может в голове уложиться :-)
...
Рейтинг: 0 / 0
17.07.2007, 16:39
    #34664821
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
У меня вот никак не укладывается как они могли сделать в 10UC4, чтобы значение MT global info: sessions иногда было отрицательным (даже на серверах где подключения клиентов очень редки, так что о переполнении тут вряд ли скажешь)
...
Рейтинг: 0 / 0
17.07.2007, 16:49
    #34664885
ak-47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
Да, баг. В IDS 11.10 UC1 такого нет.
...
Рейтинг: 0 / 0
17.07.2007, 16:49
    #34664886
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
ak-47onstat -z делал - все тоже самое.
авторЕсли ошибка все равно останется, то я "снимаю шляпу" перед индусами :) которые умудрились в такой простой формуле сделать такую хитрую ошибку.
Честноговоря, до сих пор не может в голове уложиться :-)
Условную шляпу снял :)
Вот уж действительно "доверяй, но проверяй".
Хорошо, что я уже давно использую для мониторинга свои SQL-и :)
правда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)
...
Рейтинг: 0 / 0
17.07.2007, 16:54
    #34664906
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
vasilisправда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)и деление на 0
...
Рейтинг: 0 / 0
17.07.2007, 16:58
    #34664934
ak-47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
авторправда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)

с ними надо поступать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  function GetProfileValue(value: int64): string;
    var
      lw, val: int64;
  begin
    lw :=  4294967295 ;
    if value >=  0  then result := IntToStr(value)
      else begin
             val := abs(value);
             result := IntToStr(lw - val);
           end;
  end;

проверено. SQL-ем это тоже несложно сделать. Идея ясна?
...
Рейтинг: 0 / 0
17.07.2007, 17:03
    #34664952
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
Журавлев Денис vasilisправда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)и деление на 0
А нефиг смотреть статистику через 30 сек после начала работы :))
Хотя изредка и сам на это нарывался.
На самом деле такая бяка присутствует во многих моих запросах, которые что то вычисляют, но так обломно вставлять case в кучу запросов, к тому же хотелось, чтобы все работало в 7.24 и 7.30, а не только в новых версиях...
...
Рейтинг: 0 / 0
17.07.2007, 19:17
    #34665388
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Informix 10 onstsat -p %cache
ak-47 авторправда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)
с ними надо поступать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  function GetProfileValue(value: int64): string;
    var
      lw, val: int64;
  begin
    lw :=  4294967295 ;
    if value >=  0  then result := IntToStr(value)
      else begin
             val := abs(value);
             result := IntToStr(lw - val);
           end;
  end;
проверено. SQL-ем это тоже несложно сделать. Идея ясна?
Спасибо, но идея ясна давно, вот только реализовывать идеи часто некому :)
А точно проверено на всех версиях ? :)
насколько я помню, в 4-х байтовом int (я уж не говорю о том, что int64 есть далеко не везде :) один бит все таки идет на знак, поэтому максимальное положительное число 2 в 31 степени -1 (2147483641).
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix 10 onstsat -p %cache / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]