理想情況下CFS對CPU時間占比的衡量是在一個無限小的時間片內計算單個線程執行時間的占比,CFS的目標是所有線程在這個小的時間片周期內執行的時間都是相同的,無限小在現實中顯然是不存在的,Linux系統中這個時間片周期是與系統CPU數有關的,默認情況下單核CPU對應6ms,雙核CPU對應12ms,8核CPU對應24ms,當線程數增加到很大數量時,CFS會保證每個線程獲得zui小執行時間,
單核CPU對應0.75ms,雙核CPU對應1.5ms,8核CPU對應3ms。在CFS管理下,某個線程運行時如果進入阻塞態(或其他非運行態)或者當前時間片周期內的CPU時間占比達到后將會暫停運行,CFS然后將會選擇當前時間片周期內已執行時間zui少的運行態線程繼續運行。當然CPU時間占比在內核中也是以運行時間衡量的,比如某個單核CPU系統中只有兩個相同優先級的線程同時處于運行態,那么CFS將會以6ms為周期來調度所有線程,而每個6ms周期內每個線程分得3ms執行時間,如果某個線程中有I/O操作等其他操作使該線程進入非運行態,CFS將會立即使另外一個線程繼續運行,如果兩個線程都是基本沒有I/O操作等會引起阻塞的操作(比如忙循環),那么線程將會在自己的執行時間結束(本質上是超出CPU時間占比)后被CFS程序調度出當前正在執行的狀態,另外一個線程獲得CPU資源開始執行。
需要注意的是,進入CFS(或其他調度算法)需要調度事件的產生,調度事件可以是線程自己調用函數顯示執行調度,或者線程執行I/O操作等會進入阻塞的操作以及等待的事件發生線程進入運行態等(內核中有固定的調度點),如果一個程序一直處于忙計算(比如忙循環程序),那么就會需要系統軟時間中斷來產生調度事件從而進入CFS調度判斷下一個可執行程序。目前我們的Linux內核普遍配置的系統軟時間中斷產生的頻率為100Hz,也即每10ms產生一次中斷,那么系統中只有忙計算類(如忙循環)線程的情況下,只有當系統產生軟時間中斷時,CFS才會被調用來判斷下一個執行的線程并使其占有CPU開始執行,這個現象看起來就好象是Linux調度策略簡單的給每個線程分配了10ms的時間片,其實并不是這樣。如果系統中同時有忙計算類的線程和經常進行I/O操作類的線程,由于I/O類線程基本處于等待事件的阻塞態中,執行的時間很少,而計算類線程在執行的時間會比較長,如果計算類線程正在執行時,I/O類線程等待的事件發生了,CFS馬上就會判斷出I/O類線程在之前時間段內執行的時間很少,即已使用的CPU占比與分配給他的相比很小,而計算類線程很有可能已經超過了分配的CPU占比,那么CFS將會馬上使I/O類的線程占有CPU開始執行,如此系統總是能及時響應I/O類線程。
1769-SDN DeviceNet掃描器模塊
1769-PB4 電源 24VDC輸入 4A
1769-PB2 電源 24VDC輸入 2A
1769-PA4 電源 220VAC輸入 4A
1769-PA2 電源 220VAC輸入 2A
1769-OW8I 8路單獨隔離繼電器輸出
1769-OW8 8路繼電器輸出
1769-OW16 16路繼電器輸出
1769-OV16 16路24VDC,晶體管輸出,匯流
1769-OF8V 8路電壓型模擬量輸出
1769-OF8C 8路電流型模擬量輸出
1769-OF2 2路模擬量輸出
1769-OB8 8路24VDC,晶體管輸出,源流
1769-OB32 32路24VDC,晶體管輸出,源流
1769-OB16P 16路24VDC,晶體管輸出,源流(帶電子保護)
1769-OB16 16路24VDC,晶體管輸出,源流
1769-OA8 8路120/240VAC SSR輸出
1769-OA16 16路120/240VAC SSR輸出
1769-L35E 處理器 1.5M內存 帶EtherNet接口
1769-L35CR 處理器 1.5M內存 帶冗余ControlNet接口
1769-L32E 處理器 750K內存 帶EtherNet接口
1769-L32C 處理器 750K內存 帶ControlNet接口
1769-L31 處理器 512K內存 帶RS232接口
1769-IT6 模擬量輸入模塊(6路熱電偶)
1769-IR6 模擬量輸入模塊(6路RTD)
1769-IQ6XOW4 6路24VDC輸入,4路繼電器輸出
1769-IQ32 32路24VDC輸入模塊
1769-IQ16F 16路高速灌入/拉出電流型輸入模塊
1769-IQ16 16路24VDC輸入模塊
1769-IM12 12路240VAC輸入模塊
1769-IF8 8路差分模擬量輸入
1769-IF4XOF2 4入2出模擬量
1769-IF4 4路差分模擬量輸入
1769-IA8I 8路120VAC輸入模塊
1769-IA16 16路120VAC輸入模塊
1769-HSC 高速計數器模塊
1769-ECR 右端蓋
1769-ECL 左端蓋
1769-CRR3 右接右擴展電纜,1m
1769-CRR1 右接右擴展電纜,305mm
1769-CRL3 右接左擴展電纜,1m
1769-CRL1 右接左擴展電纜,305mm
1769-CLL3 左接左擴展電纜,1m
1769-CLL1 左接左擴展電纜,305mm
1769-ADN DeviceNet適配器模塊
型號/訂貨號 描述
1769-OW8 8路繼電器輸出
1769-OW16 16路繼電器輸出
1769-OV16 16路24VDC,晶體管輸出,匯流
1769-OF2 2路模擬量輸出
1769-OB16 16路24VDC,晶體管輸出,源流
1769-OA8 8路120/240VAC SSR輸出
1769-IQ6XOW4 6路24VDC輸入,4路繼電器輸出
1769-IQ32 32路24VDC輸入模塊
1769-IQ16 16路24VDC輸入模塊
1769-IM12 12路240VAC輸入模塊
1769-IF8 8路差分模擬量輸入
1769-IF4XOF2 4入2出模擬量
1769-IF4 4路差分模擬量輸入
1769-IA16 16路120VAC輸入模塊
1769-ECR 端蓋
1769-IF8輸入模塊
1769-IF8輸入模塊