Мне любопытно, сколько циклов требуется для смены контекста в Linux. Я специально использую E5405 Xeon (x64), но мне бы хотелось посмотреть, как он сравнивается с другими платформами.
Сколько времени занимает переключение контекста в Linux?
Ответы (3)
Существует бесплатное приложение LMBench, написанное Ларри Маквоем и его друзьями. Он предоставляет набор тестов ОС и аппаратного обеспечения. Один из тестов называется lat_ctx и измеряет задержки контекстного переключения. Погуглите lmbench и проверьте сами на своем HW. Это единственный способ получить значимое для вас число.
Гилад
/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
Запустите vmstat на своем компьютере, когда делаете что-то, что требует интенсивного переключения контекста. Он не говорит вам, сколько времени занимает фактическое переключение, но сообщит вам, сколько переключений вы делаете в секунду.
Затем вы должны оценить, сколько каждый квант времени тратит на выполнение фактического кода по сравнению с переключением контекста. Может быть 100:1 или что-то в этом роде? Я не знаю. 1000:1?
Моя машина сейчас делает примерно 3000 переключений в секунду, т.е. 0,3 мс на квант времени. При соотношении 100:1 это означает, что фактическое переключение занимает 0,003 мс.
Но с несколькими ядрами, потоками, приводящими к выполнению, и т. Д. И т. Д. Я бы не сделал никаких выводов из такого предположения :)
Я написал код, который может отображать (небольшие) UDP-пакеты со скоростью 200 тыс. пакетов в секунду.
Это говорит о том, что переключение контекста возможно не более чем за 2,5 микросекунды, а фактическое переключение контекста, вероятно, занимает несколько меньше времени.