powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix 10 onstsat -p %cache
13 сообщений из 13, страница 1 из 1
Informix 10 onstsat -p %cache
    #34664301
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть непонятка с отображением %кеширования записи в 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
Informix 10 onstsat -p %cache
    #34664318
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСкрин приложен.
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664539
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот уж чего никогда не делал, так это не проверял правильность цифр в 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
Informix 10 onstsat -p %cache
    #34664583
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА если посчитать самому, т.е. взять цифры из sysprofile, то результат будет сопадать ?
Нет. В sysprofile те же значения, что в onstat -p (собственно он их от туда и берет наверное)
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664710
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, если эти статистические данные за очень большой период (или очень интенсивная нагрузка сервера), то кол-во чт/зап из буферов будут переходить макс. значение для int (2млр.197млн....) и начнет показывать не верные (в обычном понимании) цифоы.
Проверьте этот вариант, т.е. сбросить данные (onstat -z) и снова помониторить и проверить расчет. Если ошибка все равно останется, то я "снимаю шляпу" перед индусами :) которые умудрились в такой простой формуле сделать такую хитрую ошибку.
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664801
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть небольшая разница:
До IDS 10 значения sysprofile действительно когда доходили до граничного значения int, то продолжались в отрицательную сторону, но эти значения можно перечитать и получить значение показываемое onstat -p. Тем более, что onstat -p показывает всегда правильно (без отриц. значений)
В IDS 10 поле в sysshmhdr (откуда берет значения sysprofile) имеет тип INT8. Т.е. отрицательных значений я там не видел.
onstat -z делал - все тоже самое.
авторЕсли ошибка все равно останется, то я "снимаю шляпу" перед индусами :) которые умудрились в такой простой формуле сделать такую хитрую ошибку.
Честноговоря, до сих пор не может в голове уложиться :-)
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664821
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня вот никак не укладывается как они могли сделать в 10UC4, чтобы значение MT global info: sessions иногда было отрицательным (даже на серверах где подключения клиентов очень редки, так что о переполнении тут вряд ли скажешь)
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664885
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, баг. В IDS 11.10 UC1 такого нет.
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664886
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ak-47onstat -z делал - все тоже самое.
авторЕсли ошибка все равно останется, то я "снимаю шляпу" перед индусами :) которые умудрились в такой простой формуле сделать такую хитрую ошибку.
Честноговоря, до сих пор не может в голове уложиться :-)
Условную шляпу снял :)
Вот уж действительно "доверяй, но проверяй".
Хорошо, что я уже давно использую для мониторинга свои SQL-и :)
правда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664906
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisправда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)и деление на 0
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664934
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-ем это тоже несложно сделать. Идея ясна?
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34664952
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис vasilisправда, в них тоже хватает заморочек и недостатков, например в том же случае с процентом кеширования может быть отрицательное значение :)и деление на 0
А нефиг смотреть статистику через 30 сек после начала работы :))
Хотя изредка и сам на это нарывался.
На самом деле такая бяка присутствует во многих моих запросах, которые что то вычисляют, но так обломно вставлять case в кучу запросов, к тому же хотелось, чтобы все работало в 7.24 и 7.30, а не только в новых версиях...
...
Рейтинг: 0 / 0
Informix 10 onstsat -p %cache
    #34665388
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
13 сообщений из 13, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix 10 onstsat -p %cache
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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