LINUX.ORG.RU

Почему может процесс замирать на ровном месте?


0

0

Ситуация

есть железка via epia-m

на ней крутится процесс который в цикле с паузой 150 мс получает системное время (gettimeofday) и пишет его в лог (fprintf) на винт.

так вот в по логу видно что периодически попадаются длительные промежутки времени в течении которого gettimeofday не вызывался. Все такие промежутки равны 2 Сек.

пауза выдерживается при помощи селект-а с таймаутом 150мс ожидающего данных на чтение на холостом файловом дескрипторе.

какие есть идеи на тему откудова берутся эти большие паузы? длительное наблюдение позволило установить что оно равномерно появляется во всех етапах цикла.

PS:

есть подозрение/предположение что это биос забирает проц у ОС на свои нужды. аргументов нету.

загрузка проца согласно top - единицы процентов

★★★★★

> есть подозрение/предположение что это биос забирает проц у ОС на свои нужды. аргументов нету.

Это бред, ибо Linux не использует BIOS, насколько я знаю. Ибо современные BIOS'ы ни к черту не годятся для современных многозадачных систем, работающих в защищенном режиме.

По теме: возможно, проблемы с DMA. Время от времени срабатывает сброс дисковых кэшей на диск -> замирание. У меня такое было.

watashiwa_daredeska ★★★★
()

2 секунды - это очень уж много. Используется планировщик реального времени (_не_ SCHED_FIFO)? Попробуй перенаправиь fprintf не на диск, а в памят (/dev/shm) или даже /dev/null, посмотри, включен ли DMA на диске.

Насчет BIOS - вряд ли. Хотя ACPI - это может быть. Его поддержка включена в ядре?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

А, да кстати, ACPI может. Сталкивался с такой вещью. Когда комп засыпает и потом просыпается, то ядро, в расчете на то, что могло потерять прерывания, корректирует системное время. Берет его из таймера материнки. Если там время отличается на 2 сек, то похожий эффект может быть.

был фтп-сервер, который днем был довольно таки нагружен, и не засыпал, а ночью все время такая фигня была, когда ntpdate то и дело корректировал время на несколько секунд. Пришлось поставить костыль, чтобы после ntpdate сразу записывалось хардварное время.

ansky ★★★★★
()
Ответ на: комментарий от watashiwa_daredeska

>Это бред, ибо Linux не использует BIOS, насколько я знаю. Ибо современные BIOS'ы ни к черту не годятся для современных многозадачных систем, работающих в защищенном режиме.

мысль которую я слышал состояла в том что процессор отбирался для софтового эмулирования какогото "типа интегрированного" железа. Для этого полностью всю загрузку запускают в vm86.

>По теме: возможно, проблемы с DMA. Время от времени срабатывает сброс дисковых кэшей на диск -> замирание. У меня такое было.

DMA не используется по причине абсолютного отсутствия поддержики контролером винта. Работаем PIO4 или PIO5

cvv ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

>2 секунды - это очень уж много.

Об этом собственно и речь

>Используется планировщик реального времени (_не_ SCHED_FIFO)?

во всех процессах используется планировщик по умолчанию (SCHED_OTHER)

>Попробуй перенаправиь fprintf не на диск, а в памят (/dev/shm) или даже /dev/null, посмотри, включен ли DMA на диске.

надо будет подумать в этом направлении

>Хотя ACPI - это может быть. Его поддержка включена в ядре?

включена

cvv ★★★★★
() автор топика
Ответ на: комментарий от ansky

>когда ntpdate то и дело корректировал время на несколько секунд

все паузы *РОВНО* 2 секунды

cvv ★★★★★
() автор топика

Говорят, что на Via epia есть проблемы с одновременным использованием DMA различными устройствами, например, если сетевка передает данные используя DMA и в видеоадаптер данные идут через DMA. Может попробовать совсем запретить DMA...

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.