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