Насколько дорого обходятся переключатели контекста ядра по сравнению с переключениями контекста пользовательского пространства?

Согласно C10k и в этом документе , пропускная способность серверов с 1 потоком на соединение снижается по мере того, как подключается все больше и больше клиентов. и создается все больше и больше потоков. Согласно этим двум источникам, это связано с тем, что чем больше потоков существует, тем больше времени тратится на переключение контекста по сравнению с фактической работой, выполняемой этими потоками. Серверы Evented, кажется, не так сильно страдают от снижения производительности при большом количестве подключений.

Однако серверы evented также переключают контекст между клиентами, они просто делают это в пространстве пользователя.

  • Почему эти переключатели контекста пользовательского пространства быстрее, чем переключение контекста потока ядра?
  • Что именно делает переключение контекста ядра, что намного дороже?
  • Насколько дорого обходится переключение контекста ядра? Сколько времени это занимает?
  • Зависит ли время переключения контекста ядра от количества потоков?

Меня больше всего интересует, как ядро ​​Linux обрабатывает переключение контекста, но также приветствуется информация о других операционных системах.

9
задан Hongli 7 August 2011 в 01:36
поделиться