Ядро Linux: стоимость немедленного планирования - PullRequest
4 голосов
/ 15 февраля 2010

Из http://lkml.indiana.edu/hypermail/linux/kernel/0103.1/0030.html я узнаю о новом типе мьютексов в linux, adaptive_np:

PTHRED_MUTEX_ADAPTIVE_NP является новым мьютекс, который предназначен для высокого пропускная способность в жертву справедливость и даже циклы процессора. это мьютекс не передает право собственности на ожидание потока, а скорее позволяет соревнование. Кроме того, через ядро ​​SMP, операция блокировки использует вращение повторите блокировку, чтобы избежать затрат на немедленное планирование.

Там упоминается "Стоимость немедленного планирования". Сколько это стоит? (С точки зрения тактов процессора; TLB, TSS, что-то еще, перезагрузка) Что делается в ядре между «немедленным запросом планирования» и повторным планированием обратно в состояние выполнения?

Как я могу сделать явное планирование и как я могу измерить его стоимость?

1 Ответ

3 голосов
/ 15 февраля 2010

Похоже, это просто легкая блокировка, предназначенная для того, чтобы потоки могли избежать планировщика.

Идея состоит в том, чтобы заменить относительно тяжелую операцию, основанную на переключении контекста, надеждой на короткий промежуток времени, проведенный в спин-блокировке.

Не обращайте внимания на использование «новых», спинлоки такие же старые, как холмы. Я думаю, это было новшеством в этой библиотеке почти 10 лет назад.

«Явное планирование», по-видимому, то же самое, что и переключение контекста, поэтому вы можете измерить это, имея два потока yield() ЦП друг к другу миллион раз и измерить время выполнения.

...