簡體   English   中英

與用戶空間上下文切換相比,內核上下文切換有多貴?

[英]How expensive are kernel context switches compared to userspace context switches?

根據C10k本文 ,隨着越來越多的客戶端連接並創建越來越多的線程,每個連接1個線程的服務器的吞吐量會降低。 根據這兩個來源,這是因為存在的線程越多,與這些線程完成的實際工作相比,上下文切換花費的時間就越多。 在高連接數下,優雅服務器似乎沒有受到性能降低的影響。

但是,事務服務器也在客戶端之間進行上下文切換,它們只在用戶空間中進行。

  • 為什么這些用戶空間上下文切換比內核線程上下文切換更快?
  • 內核上下文切換到底有什么用呢?
  • 內核上下文切換到底有多貴? 需要多長時間?
  • 內核上下文切換時間是否取決於線程數?

我最感興趣的是Linux內核如何處理上下文切換,但也歡迎有關其他操作系統的信息。

  • 為什么這些用戶空間上下文切換比內核線程上下文切換更快?

因為CPU不需要切換到內核模式並返回用戶模式。

  • 內核上下文切換到底有什么用呢?

主要是切換到內核模式。 IIRC,Linux中的內核模式和用戶模式的頁表相同,所以至少沒有TLB失效懲罰。

  • 內核上下文切換到底有多貴? 需要多長時間?

需要測量,並且可能因機器而異。 我想現在一台典型的桌面/服務器機器每秒可以進行幾十萬個上下文切換,可能只有幾百萬。

  • 內核上下文切換時間是否取決於線程數?

取決於內核調度程序如何處理這個問題。 AFAIK,在Linux中它非常高效,即使有大量的線程數,但更多的線程意味着更多的內存使用意味着更多的緩存壓力,因此可能會降低性能。 我還期望在處理數千個套接字時涉及一些開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM