新聞中心
隨著技術(shù)的發(fā)展和應(yīng)用場(chǎng)景的增多,服務(wù)器性能的表現(xiàn)已經(jīng)成為了關(guān)注的重點(diǎn)之一。在Linux系統(tǒng)中,關(guān)閉調(diào)度任務(wù)可以提高系統(tǒng)的性能和穩(wěn)定性。在本文中,我將介紹如何關(guān)閉調(diào)度任務(wù)以提升系統(tǒng)性能,并解釋其背后的原理。

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(成都創(chuàng)新互聯(lián)公司).為客戶提供專業(yè)的服務(wù)器托管,四川各地服務(wù)器托管,服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:028-86922220
什么是調(diào)度任務(wù)?
在計(jì)算機(jī)科學(xué)中,調(diào)度任務(wù)(或稱進(jìn)程調(diào)度)是操作系統(tǒng)用來控制或分配CPU時(shí)間片的過程。簡(jiǎn)單來說,當(dāng)計(jì)算機(jī)中有多個(gè)進(jìn)程在運(yùn)行時(shí),操作系統(tǒng)會(huì)分別為每個(gè)進(jìn)程分配一定的CPU時(shí)間片,使它們?cè)谝欢〞r(shí)間內(nèi)輪流運(yùn)行。這就是調(diào)度任務(wù)的原理。
為什么要關(guān)閉調(diào)度任務(wù)?
雖然調(diào)度任務(wù)在多任務(wù)處理中發(fā)揮著重要的作用,但在一些情況下關(guān)閉調(diào)度任務(wù)可以提升系統(tǒng)的性能和穩(wěn)定性。比如,在進(jìn)行大量數(shù)據(jù)處理、高負(fù)載的網(wǎng)絡(luò)應(yīng)用或需要處理實(shí)時(shí)數(shù)據(jù)的應(yīng)用下,關(guān)閉調(diào)度任務(wù)可以確保CPU在處理相應(yīng)任務(wù)時(shí)不會(huì)被其他任務(wù)占用而導(dǎo)致性能下降。此外,關(guān)閉調(diào)度任務(wù)還可以降低系統(tǒng)在啟動(dòng)過程、進(jìn)程切換和中斷處理方面的開銷,從而提升操作系統(tǒng)的整體性能和運(yùn)行效率。
如何關(guān)閉調(diào)度任務(wù)?
在Linux系統(tǒng)中,可以通過修改/sys/kernel/sched_features文件的值,來關(guān)閉調(diào)度任務(wù)。這可以通過下列命令來實(shí)現(xiàn):
“`
echo NO_SCHED > /sys/kernel/sched_features
“`
執(zhí)行這個(gè)命令后,你將會(huì)看到系統(tǒng)彈出了錯(cuò)誤提示信息。這是因?yàn)?in/init中安排了后面重新調(diào)度,被NOP_LOCKS迫使進(jìn)行的代碼就不再謹(jǐn)慎,無法阻止其運(yùn)行。拋出的實(shí)際錯(cuò)誤是“segmentation fault”,而出錯(cuò)的行數(shù)是 reboot 成則一量,就出現(xiàn)了內(nèi)核崩潰的情況。
要解決這種錯(cuò)誤,只需在程序中加入處理SIGSEGV的信號(hào)處理器程序,或者重寫/in/init程序即可。想必,這已經(jīng)不是一個(gè)普通的用戶能夠輕松應(yīng)對(duì)的操作。
因此,更推薦的方式是使用Linux內(nèi)核參數(shù),以禁用CPU調(diào)度程序。我們可以在系統(tǒng)啟動(dòng)時(shí)編輯grub.cfg文件,增加這些參數(shù)。可以添加以下選項(xiàng):
“`
nohz=on
isolcpus=0
“`
nohz選項(xiàng)表示開啟完全不要時(shí)鐘中斷原理,它使得機(jī)器能夠更有效的做好優(yōu)化,避免排隊(duì)出現(xiàn)因?yàn)槎虝r(shí)間內(nèi)過多的進(jìn)程切換所導(dǎo)致的性能下降。比如,一些計(jì)算機(jī)非常注重實(shí)時(shí)性,禁用時(shí)鐘中斷就能夠在保證實(shí)時(shí)性的同時(shí)顯著提高處理性能,大大降低了CPU的開銷。
另外,isolcpus選項(xiàng)指定CPU0將會(huì)成為系統(tǒng)任務(wù)和系統(tǒng)功能專用處理器,剩下的CPU則不擔(dān)任系統(tǒng)任務(wù),這讓位置可控的處理器能夠更高效地進(jìn)行工作。如果您有具體的任務(wù)需要保證高性能,只需要在那個(gè)CPU核心上運(yùn)行即可。
結(jié)語
關(guān)閉調(diào)度任務(wù)是提高Linux系統(tǒng)性能的一種有效方式,但需要注意的是,在某些特定場(chǎng)景下,關(guān)閉調(diào)度任務(wù)可能會(huì)引起問題。因此,在關(guān)閉調(diào)度任務(wù)前,請(qǐng)確定您的系統(tǒng)可以承受此種模式,并在實(shí)戰(zhàn)中謹(jǐn)慎配置。希望本文能對(duì)您在提高Linux系統(tǒng)性能方面提供一些有用的參考。
相關(guān)問題拓展閱讀:
- 怎么實(shí)現(xiàn)linux整點(diǎn)和半點(diǎn)執(zhí)行任務(wù)
怎么實(shí)現(xiàn)linux整點(diǎn)和半點(diǎn)執(zhí)行任務(wù)
linux整點(diǎn)和半點(diǎn)執(zhí)行任務(wù)實(shí)現(xiàn)方式如下:
(1)at命令
假如我們只是想要讓特定任務(wù)運(yùn)行一次,那么,這時(shí)候就要用到at監(jiān)控程序了。
設(shè)置at命令很簡(jiǎn)單,指示定運(yùn)行的時(shí)間,那么就會(huì)在哪個(gè)時(shí)候運(yùn)行。at類似打印進(jìn)程,會(huì)把任務(wù)放到/var/spool/at目錄中,到指定時(shí)間運(yùn)行它。at命令相當(dāng)于另一個(gè)shell,運(yùn)行at time命令時(shí),它發(fā)送一個(gè)個(gè)命令,可以輸入任意命令或者程序。at now + time命令可以在指示任務(wù)。
假設(shè)處理一個(gè)數(shù)據(jù)庫(kù),要在別人不用系統(tǒng)時(shí)去處理數(shù)據(jù),比如凌晨3點(diǎn)10分。那么我們就應(yīng)該先建立/home/kyle/do_job腳本管理數(shù)據(jù)庫(kù),計(jì)劃處理/home/kyle/do_job文件中的結(jié)果。正常方式是這樣啟動(dòng)下列命令:
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
AT Time中的時(shí)間表示方法
–
時(shí)間例子說明
–
Minute at now + 5 minutes 任務(wù)在5分鐘后運(yùn)行
Hour at now + 1 hour 任務(wù)在1小時(shí)后運(yùn)行
Days at now + 3 days 任務(wù)在3天后運(yùn)行
Weeks at now + 2 weeks 任務(wù)在兩周后運(yùn)行
Fixed at midnight 任務(wù)在午夜運(yùn)行
Fixed at 10:30pm 任務(wù)在晚上10點(diǎn)30分
注意:一定要檢查一下atq的服務(wù)是否啟動(dòng),有些操作系統(tǒng)未必是默認(rèn)啟動(dòng)的, linux默認(rèn)為不啟動(dòng),而ubuntu默認(rèn)為啟動(dòng)的。檢查是否啟動(dòng),用service atd檢查語法,用service atd status檢查atd的狀態(tài),用service atd start啟動(dòng)atd服務(wù)。
查看at執(zhí)行的具體內(nèi)容:一般位于/var/spool/at目錄下面,用vi打開,在最后一部分就是你的執(zhí)行程序
(2)crontab
cron是一個(gè)Linux下的定時(shí)執(zhí)行工具,可以在無需人工干預(yù)的情況下運(yùn)行作業(yè)。由于Cron 是Linux的內(nèi)置服務(wù),但它不自動(dòng)起來,可以用以下的方法啟動(dòng)、關(guān)閉這個(gè)服務(wù):
/in/service crond start //啟動(dòng)服務(wù)
/in/service crond stop //關(guān)閉服務(wù)
/in/service crond restart //重啟服務(wù)
/in/service crond reload //重新載入配置
/in/service crond status //查看服務(wù)狀態(tài)
(crond或cron看實(shí)際情況
service crond start #啟動(dòng)服務(wù)
service crond stop #關(guān)閉服務(wù)
service crond restart #重啟服務(wù)
service crond reload #重新載入配置
)
你也可以將這個(gè)服務(wù)在系統(tǒng)啟動(dòng)的時(shí)候自動(dòng)啟動(dòng):棚備老
在/etc/rc.d/rc.local這個(gè)腳本的末尾加上:
/in/service crond start
現(xiàn)在Cron這個(gè)服務(wù)已經(jīng)在進(jìn)程里面了,我們就可以用這個(gè)服務(wù)了,Cron服務(wù)提供以下幾種接口供大家使用:
1、直接用crontab命令編輯
cron服務(wù)提供滾渣 crontab命令來設(shè)定cron服務(wù)的,以下是這個(gè)命令的一些參數(shù)與說明:
crontab -u //設(shè)定某個(gè)用戶的cron服務(wù),一般root用戶在執(zhí)行這個(gè)命令的時(shí)候需要此參數(shù)
crontab -l //列出某個(gè)用戶cron服務(wù)的詳細(xì)內(nèi)容
crontab -r //刪除某個(gè)用戶的cron服務(wù)
crontab -e //編輯某個(gè)用戶的cron服務(wù)
比如說root查看自己的cron設(shè)置:crontab -u root -l
再例如,root想刪除fred的cron設(shè)置:crontab -u fred -r
基本格式 :
*****command
分 時(shí) 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示鏈升
第2列表示小時(shí)1~23(0表示0點(diǎn))
第3列表示日期1~31
第4列表示月份1~12
第5列標(biāo)識(shí)號(hào)星期0~6(0表示星期天)
第6列要運(yùn)行的命令
crontab文件的一些例子:
#每晚的21:30重啟apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpdrestart
#每天早上6點(diǎn)10分
10 6 * * * date
#每?jī)蓚€(gè)小時(shí)
0 */2 * * * date
#晚上11點(diǎn)到早上8點(diǎn)之間每?jī)蓚€(gè)小時(shí),早上8點(diǎn)
0 23-7/2,8 * * * date
#每個(gè)月的4號(hào)和每個(gè)禮拜的禮拜一到禮拜三的早上11點(diǎn)
* mon-wed date
#1月份日早上4點(diǎn)
在linux平臺(tái)上如果需要實(shí)現(xiàn)任務(wù)調(diào)度功能可以編寫cron腳本來實(shí)現(xiàn)以某一頻率執(zhí)行任務(wù)
linux缺省會(huì)啟動(dòng)crond進(jìn)程,crond進(jìn)程不需要用戶啟動(dòng)、關(guān)閉。
crond進(jìn)程負(fù)責(zé)讀取調(diào)度任務(wù)并執(zhí)行,用戶只需要將相應(yīng)的調(diào)度腳本寫入cron的調(diào)度配置文件中。
cron的調(diào)度文件有以下幾個(gè):
crontab
cron.d
cron.daily
cron.hourly
cron.monthly
cron.weekly
執(zhí)行方法一:
如果用的任務(wù)不是以hourly monthly weekly方式執(zhí)行,則可以將相應(yīng)的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鐘執(zhí)行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內(nèi)容為
*/1 * * * * root /opt/bin/test-cron.sh
在指定的時(shí)間運(yùn)行任務(wù)
也可以通過at命令來控制在指定的時(shí)間運(yùn)行任務(wù)
如:
at -f test-cron.sh -v 10:25
其中-f 指定腳本文件,-v 指定運(yùn)行時(shí)間
首先用 contab -l 導(dǎo)出contab的配置,然后編輯contabs.tmp文件。以一下格式添加一行:
分鐘小時(shí)天月星期命令
比如
10 3 * * 0,6 hello
就是每周六、周日的3點(diǎn)10分執(zhí)行hello程序。
15 4 * * 4-6 hello
就是從周四到周六的4點(diǎn)15點(diǎn)執(zhí)行hello程序。
然后用contab contabs.tmp 命令導(dǎo)入新的配置。
一般不建議直接修改/etc/下的相關(guān)配置文件。
啟動(dòng)cron進(jìn)程的方法:/etc/init.d/crond start
開機(jī)就啟動(dòng)cron進(jìn)程的設(shè)置命令:chkconfig –add crond
執(zhí)行方法二:
把cron加入到啟動(dòng)腳本中:
# rc-update add vixie-cron default
crontab -l #查看你的任務(wù)
crontab-e#編輯你的任務(wù)
crontab-r#刪除用戶的crontab的內(nèi)容
實(shí)例講解二:
系統(tǒng)cron設(shè)定:/etc/crontab
通過 /etc/crontab 文件,可以設(shè)定系統(tǒng)定期執(zhí)行的任務(wù),當(dāng)然,要想編輯這個(gè)文件,得有root權(quán)限
0 7 * * * root mpg123 ~/wakeup.mp3
分時(shí)日月周
示例:
0 4 * *rootemerge –sync && emerge -uDworld#每周日凌晨4點(diǎn),更新系統(tǒng)
* root mail robin > /tmp/test.txt
晚上11點(diǎn)到早上8點(diǎn)之間每?jī)蓚€(gè)小時(shí),早上八點(diǎn)
0 23-7/2,8 * * * echo”have a good dream:)” >>/tmp/test.txt
每個(gè)月的4號(hào)與每個(gè)禮拜的禮拜一到禮拜三的早上11點(diǎn)
* 1-3 command line
1月1日早上4點(diǎn)
* command line
收獲:可以把經(jīng)常要做的一些事放到其中,簡(jiǎn)化工作量,如每周一檢查服務(wù)器的運(yùn)行狀態(tài),查看報(bào)告,殺掉一些進(jìn)程等等……
每隔三秒:*****/home/somedir/scripts.sh*****sleep3&&/home/somedir/scripts.sh*****sleep6&&/home/somedir/消激scripts.sh*****sleep9&&/home/somedir/scripts.sh*****sleep12&&/home/somedir/拿握襪scripts.sh*****sleep15&&/home/somedir/scripts.sh*****sleep18&&/home/somedir/scripts.sh*****sleep21&&/home/somedir/scripts.sh*****sleep24&&/home/somedir/scripts.sh*****sleep27&&/home/somedir/scripts.sh*****sleep30&&/home/somedir/scripts.sh*****sleep33&&/home/somedir/scripts.sh*****sleep36&&/home/somedir/scripts.sh*****sleep39&&/home/somedir/scripts.sh*****sleep42&&/home/somedir/scripts.sh*****sleep45&&/home/somedir/scripts.sh*****sleep48&&/home/somedir/scripts.sh*****sleep51&&/皮清home/somedir/scripts.sh*****sleep54&&/home/somedir/scripts.sh*****sleep57&&/home/somedir/scripts.sh
關(guān)于linux關(guān)閉調(diào)度任務(wù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
分享名稱:Linux實(shí)戰(zhàn):關(guān)閉調(diào)度任務(wù)提升系統(tǒng)性能(linux關(guān)閉調(diào)度任務(wù))
分享地址:http://www.5511xx.com/article/dhpsjpj.html


咨詢
建站咨詢
