1.Linux 調(diào)度 I/O消耗型和處理器消耗型進程(保證及時的IO響應(yīng)和高效的CPU利用率)負載平衡:每顆CPU上有一個進程隊列,當(dāng)CPU的負載差大于25%時運行負載平衡程序。(從最忙的CPU上取下一個優(yōu)先級最高且CPU親和力最小的進程到負載最輕的CPU進程隊列中)。 為什么要取優(yōu)先級最高的進程呢? 因為把優(yōu)先級高的進程平均分配到各個CPU上去才能使系統(tǒng)的性能達到最高。CPU的親和力:主要是高速緩存或是其它原因,如某個進程只能在某個CPU上運行。 2.中斷處理程序與線程的不同之處。 1、中斷中不能睡眠。 2、中斷上下文具有較嚴格的時間限制,因為它打斷了正在運行的線程。 3、中斷處理程序不具有自己的棧,它共享被中斷線程的棧,因此在分配一個任務(wù)棧要注意比實際需求的要大一點,以防中斷發(fā)生時,中斷程序使用棧時溢出。 3. 自旋鎖:主要特點,與等待一個信號量不同的是它在得不到想要的資源時進程不會睡眠。 4. 引入讀寫自旋鎖。讀寫自旋鎖減少了鎖的粒度。 5.slab層:優(yōu)化動態(tài)內(nèi)存分配,(將相同大小的動態(tài)內(nèi)存分配和釋放放到一個連續(xù)的內(nèi)存區(qū),這樣就不會產(chǎn)生內(nèi)存碎片,因為每次分配剛好是一個單位,每次釋放也剛好是一個單位,比如用在進程控制塊的動態(tài)分配與釋放中)。 6. 磁盤塊I/O操作:使用Linux電梯算法,在磁盤底層操作時將磁盤塊IO請求按磁道排序,以減少磁頭尋跡時間而優(yōu)化磁盤IO操作。 7.使用頁高速緩存和頁回寫,優(yōu)化文件系統(tǒng)。 |