Сколько времени занимает переключение контекста в Linux?

Мне любопытно, сколько циклов требуется для смены контекста в Linux. Я специально использую E5405 Xeon (x64), но мне бы хотелось посмотреть, как он сравнивается с другими платформами.


person twk    schedule 04.02.2009    source источник


Ответы (3)


Существует бесплатное приложение LMBench, написанное Ларри Маквоем и его друзьями. Он предоставляет набор тестов ОС и аппаратного обеспечения. Один из тестов называется lat_ctx и измеряет задержки контекстного переключения. Погуглите lmbench и проверьте сами на своем HW. Это единственный способ получить значимое для вас число.

Гилад

person gby    schedule 05.02.2009
comment
Читатели должны отметить, что для работы LMBench требуется установить BitKeeper, который не является бесплатным программным обеспечением. - person Shantanu Kumar; 07.02.2013
comment
@ShantanuKumar, это просто неправда: bitmover.com/lmbench/get_lmbench.html - person gby; 10.02.2013
comment
Когда я пытался запустить LMBench, я продолжал сталкиваться с ошибкой make[1]: Вход в каталог /home/shantanu/app/src/lmbench3/src' make[1]: *** No rule to make target ../SCCS/s.ChangeSet', необходимый для bk.ver'. Stop. make[1]: Leaving directory /home/shantanu/app/src/lmbench3/src' make: *** [lmbench] Ошибка 2, которая заставила меня так думать. - person Shantanu Kumar; 10.02.2013
comment
Люди, которые написали LMbench, — это те же люди, которые много лет спустя создали BitKeeper, но это просто ошибка сборки, а не зависимость от BitKeeper. - person gby; 11.02.2013
comment
Я исправляюсь. Однако у меня еще не работал LMBench. Если у кого-то есть ключ, пожалуйста, передайте его мне. - person Shantanu Kumar; 11.02.2013
comment
@Shantanu Kumar - Вы, вероятно, уже разобрались с этим, но вы можете просто использовать прикосновение, чтобы создать отсутствующий файл, и код будет создан - person RichardBruce; 31.03.2014

Запустите vmstat на своем компьютере, когда делаете что-то, что требует интенсивного переключения контекста. Он не говорит вам, сколько времени занимает фактическое переключение, но сообщит вам, сколько переключений вы делаете в секунду.

Затем вы должны оценить, сколько каждый квант времени тратит на выполнение фактического кода по сравнению с переключением контекста. Может быть 100:1 или что-то в этом роде? Я не знаю. 1000:1?

Моя машина сейчас делает примерно 3000 переключений в секунду, т.е. 0,3 мс на квант времени. При соотношении 100:1 это означает, что фактическое переключение занимает 0,003 мс.

Но с несколькими ядрами, потоками, приводящими к выполнению, и т. Д. И т. Д. Я бы не сделал никаких выводов из такого предположения :)

person truppo    schedule 04.02.2009

Я написал код, который может отображать (небольшие) UDP-пакеты со скоростью 200 тыс. пакетов в секунду.

Это говорит о том, что переключение контекста возможно не более чем за 2,5 микросекунды, а фактическое переключение контекста, вероятно, занимает несколько меньше времени.

person Alnitak    schedule 04.02.2009
comment
Вы уверены, что переключаете контекст и не получаете несколько UDP-пакетов от ОС за один раз? - person Judge Maygarden; 05.02.2009