導航:首頁 > 操作系統 > linux內核延時

linux內核延時

發布時間:2024-11-14 05:40:20

『壹』 一般優化linux的內核,需要優化什麼參數

作為高性能WEB伺服器,只調整Nginx本身的參數是不行的,因為Nginx服務依賴於高性能的操作系統。

以下為常見的幾個Linux內核參數優化方法。

『貳』 linux內核中mdelay怎麼實現

1.udelay(); mdelay(); ndelay();實現的原理本質上都是忙等待,ndelay和mdelay都是通過udelay衍生出來的,我們使用這些函數的實現往往會碰到編譯器的警告implicit declaration of function'udelay',這往往是由於頭文件的使用不當造成的。在include/asm-???/delay.h中定義了udelay(),而在include/linux/delay.h中定義了mdelay和ndelay.

udelay一般適用於一個比較小的delay,如果你填的數大於2000,系統會認為你這個是一個錯誤的delay函數,因此如果需要2ms以上的delay需要使用mdelay函數。

2.由於這些delay函數本質上都是忙等待,對於長時間的忙等待意味這無謂的耗費著cpu的資源,因此對於毫秒級的延時,內核提供了msleep,ssleep等函數,這些函數將使得調用它的進程睡眠參數指定的時間。

應用層:
#include <unistd.h>
1、unsigned int sleep(unsigned int seconds); 秒級
2、int usleep(useconds_t usec); 微秒級:1/10^-6
#define _POSIX_C_SOURCE 199309
#include <time.h>
3、int nanosleep(const struct timespec *req, struct timespec *rem);
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
// The value of the nanoseconds field must be in the range 0 to 999999999.

內核層:
include <linux/delay.h>
1、void ndelay(unsigned long nsecs); 納秒級:1/10^-10
2、void udelay(unsigned long usecs); 微秒級: 1/10^-6
3、void mdelay(unsigned long msecs); 毫秒級:1/10^-3

sleep_on(), interruptible_sleep_on();
sleep_on_timeout(), interruptible_sleep_on_timeout();
根據你的情況選用這些函數,注意: sleep操作在kernel必須小心、小心。。。
udelay()等函數是cpu忙等,沒有傳統意義上的sleep。這些函數相當於我們平時的阻塞讀、寫之類的語義,主要用於等外設完成某些操作

閱讀全文

與linux內核延時相關的資料

熱點內容
修改程序加密問題 瀏覽:147
阿里雲盤怎麼掛在伺服器 瀏覽:140
加密貨幣記賬方式 瀏覽:222
gmail郵箱的伺服器地址 瀏覽:903
安卓的宏是什麼意思 瀏覽:266
php文件中文名稱 瀏覽:758
ibm伺服器進pe如何設置 瀏覽:116
如何使華為手機不能安裝任何app 瀏覽:166
double最大值java 瀏覽:430
明日之後伺服器為什麼都是爆滿 瀏覽:325
軍隊上級如何給下級發布命令 瀏覽:395
有源碼如何破解手機棋牌 瀏覽:262
7z手機怎麼解壓izip 瀏覽:200
安卓鍵盤皮膚怎麼恢復默認 瀏覽:646
數字圖像處理演算法原理 瀏覽:729
ps電源如何接伺服器 瀏覽:877
雷霆海戰銀幣演算法 瀏覽:724
新華三伺服器叫什麼 瀏覽:161
最好用的pdf閱讀器 瀏覽:143
像不像新手程序員的你 瀏覽:342