如果我編寫一個線程並在Round Robyn Real-Time調度器上運行它,在Ubuntu 11.04中使用該ppa:https://launchpad.net/~abogani/+archive/ppa中提供的2.6.38通用內核或可用的3.0.0-9-lowlatency內核,似乎鎖定命令: apt-key get爲什麼ubuntu 2.6.38-generic或3.0.0-lowlatency內核上的線程阻止另一個線程使用mmap_sem?
當gpg在引擎蓋下嘗試使用mlock()時,它看起來會鎖定該命令,據我所知它需要mmap_sem。但是,我的測試線程從字面上看是「無所事事」,因爲它只是一個空循環。例如,我不主動使用mmap_sem。
在SMP機器上(4核心,8個邏輯核心),RR調度程序中的優先級爲50或更高的單個線程似乎始終鎖定apt-key。較低的優先級返回大約50%或更少的時間,有時需要幾分鐘才能返回。
這個實時優先級的空空閒for循環線程和mmap_sem之間的連接是什麼?
你的代碼在這裏會有所幫助 – jdt141
只是一個預感,但嘗試禁用超線程。 – caf