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 тика таймера, с которой можно поступать как обычно.