Page 1 of 2

UpTime - Аптайм или время непрерывной работы системы

Posted: Sun Mar 31, 2013 12:02 am
by Mario_r4
Собственно к мысли подвела статья http://habrahabr.ru/post/174769/
В текущем виде мы имеем ф.26.9

Code: Select all

Функция 26, подфункция 9 - получить значение счётчика времени.

Параметры: 
eax = 26 - номер функции 
ebx = 9 - номер подфункции 

Возвращаемое значение: 
eax = число сотых долей секунды, прошедших с момента запуска системы 

Замечания: 
Счётчик берётся по модулю 2^32, что соответствует немногим более 497 суток. 
Системное время можно получить функцией 3. 
Соответственно в идеальных условиях перезагружать придется раз в год, если брать грубые значения. Поскольку работы над сетевым стеком хоть и медленно, но ведутся. Да и по другим направлениям развиваемся, то имеет смысл задуматься над расширением счетчика с 2^32 до 2^64.
Spoiler:Это позволит увеличить время до жалких 2135039823346 дней или не менее жалких 5849424173, еще более жалких 58494241 столетий, совсем уж жалких 5849424 тысячелетий, и смехотворных 5,8 миллиардов лет. Я в расчетах не ошибся?
В очередной раз любой может выразить свое веское мнение и убедить всех, что перезагружать девайсы раз в год это нормально и приемлемо.
Spoiler:Ведь время, когда высоконагруженные серверы бороздящие просторы больших театров работающие на "идеальном исходном коде" время аптайма которого десятки минут и дублируемого вторичными процедурами отслеживающими смерть первых и перезапускающих их - уже наступило. А ведь писатели-фантасты описывали трехконтурные системы с абсолютной надежностью еще в начале XX века. Добро пожаловать в XXI век - век "жира" и говнокода, где ассемблеру почти нет места.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Sun Mar 31, 2013 11:07 am
by SoUrcerer
Поддерживаю модификацию.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Sun Mar 31, 2013 12:39 pm
by Akyltist
Функция 26, подфункция 9 - получить значение счётчика времени.
то имеет смысл задуматься над расширением счетчика с 2^32 до 2^64.
поддерживаю

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Sun Mar 31, 2013 3:37 pm
by srx
Функция 26, подфункция 9 - получить значение счётчика времени.
чёрт, не правильно сначала вчитался в тему
увеличить до 64 бит? хорошая мысль, с заделом на будушее так сказать!

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Sun Mar 31, 2013 3:52 pm
by Mario_r4
srx wrote:увеличить до 64 бит? хорошая мысль, с заделом на будушее так сказать!
Не обязательно трогать существующую функцию, совместимость желательно сохранять.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 11:26 am
by CleverMouse
Mario_r4 wrote:Соответственно в идеальных условиях перезагружать придется раз в год, если брать грубые значения.
Зачем перезагружать?

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 12:19 pm
by Mario_r4
CleverMouse wrote:
Mario_r4 wrote:Соответственно в идеальных условиях перезагружать придется раз в год, если брать грубые значения.
Зачем перезагружать?
А что делать в случае переполнения? Как ты предлагаешь это отлавливать?

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 12:47 pm
by CleverMouse
Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 12:53 pm
by Mario_r4
CleverMouse wrote:Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?
Приложение с длительным временем работы может некорректно функционировать.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 12:54 pm
by CleverMouse
Mario_r4 wrote:
CleverMouse wrote:Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?
Приложение с длительным временем работы может некорректно функционировать.
Пример некорректного функционирования?

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 1:02 pm
by Mario_r4
CleverMouse wrote:
Mario_r4 wrote:
CleverMouse wrote:Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?
Приложение с длительным временем работы может некорректно функционировать.
Пример некорректного функционирования?
То что в данный момент у меня нет под рукой рабочего приложения (счетчик еще надо умудриться накрутить), то это не значит что вероятности возникновения проблемы нет. Чисто логически рассуждая она может возникнуть.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 1:23 pm
by CleverMouse
Слив засчитан. Если много свободного времени и больше нечем заняться - пожалуйста, я не возражаю.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 1:28 pm
by Serge
Чисто логически, обработка такой ситуации на совести автора программы. Но сам по себе длинный счётчик вещь полезная и не требует больших изменений в ядре.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 1:31 pm
by Mario_r4
Serge wrote:Чисто логически, обработка такой ситуации на совести автора программы.
Мне интересно как? Никаких признаков переполнения у нас нет. Опиши словесно алгоритм контроля, пожалуйста. Ну, или код, если так проще.

Re: UpTime - Аптайм или время непрерывной работы системы

Posted: Mon Apr 01, 2013 1:40 pm
by CleverMouse
Абсолютные значения счётчика не имеют особого смысла сами по себе, важна только разность двух моментов времени для определения событий типа "с момента, как мы засекли, прошла минута".

Code: Select all

      ; testing for timeout
        mov     ecx, [timer_ticks]
        sub     ecx, [ebx+APPDATA.wait_begin]
        cmp     ecx, [ebx+APPDATA.wait_timeout]
        jb      .loop
Переполнение здесь ничему не мешает: если ожидание началось в момент wait_begin = 0xFFFFFFFF, а timer_ticks = 1, то после вычитания получится корректная разница ecx = 2 тика таймера, с которой можно поступать как обычно.