Multi-threaded Network Stack Lock Strategy, Solaris 10 & DragonFly BSD

多 CPU 的情況下, CPU 間同步的 overhead 很大,所以要讓相關的處理盡量留在同一棵 CPU 上,Solaris 採取的策略是一個稱為 squeue 的結構,一個 CPU 實體化一個 squeue, 從收到 network packet 開始,network driver -> IP Classfier > IP layer -> TCP Layer 都是對這個 squeue 做處理,從頭到尾只 lock 一次,並且把相關的 work thread 都 bind 在這棵 CPU 上. 參考 Solaris Networking – The Magic Revealed (Part I)

DragonFly BSD 最近也在 lock 方面做了類似的修改 [1][2],CPU locality 的部份沒提到

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s