Сколько времени занимает переключение контекста в Linux? - PullRequest
3 голосов
/ 05 февраля 2009

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

Ответы [ 3 ]

7 голосов
/ 06 февраля 2009

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

Гилад

3 голосов
/ 05 февраля 2009

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

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

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

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

0 голосов
/ 05 февраля 2009

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

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

...