日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux超線程啟用,提升計(jì)算性能!(linux開啟超線程)

Linux是一種輕量級操作系統(tǒng),廣泛應(yīng)用于服務(wù)器、工作站和嵌入式設(shè)備等領(lǐng)域。它具有安全性高、穩(wěn)定性好、靈活性強(qiáng)等優(yōu)勢,因此得到了廣泛的應(yīng)用。但是,對于需要大量計(jì)算的應(yīng)用場景,Linux的性能表現(xiàn)往往不如其他操作系統(tǒng),這既是硬件性能限制的緣故,也與Linux的線程調(diào)度算法相關(guān)。

創(chuàng)新互聯(lián)公司專注于寧夏企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站定制開發(fā)。寧夏網(wǎng)站建設(shè)公司,為寧夏等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

為了提高Linux的計(jì)算性能,我們可以采用超線程技術(shù)。超線程技術(shù)利用現(xiàn)代處理器復(fù)雜的執(zhí)行單元,通過同時執(zhí)行多個線程來提高處理器的利用率和計(jì)算性能。在Linux系統(tǒng)中啟用超線程技術(shù)可以使得CPU能夠更有效地利用計(jì)算資源,提高系統(tǒng)的運(yùn)行速度和響應(yīng)速度。

在Linux系統(tǒng)中啟用超線程技術(shù)的具體步驟如下:

1.檢測超線程技術(shù)是否已經(jīng)啟用

若在終端輸入命令:$ cat /proc/cpuinfo,可以顯示當(dāng)前CPU的相關(guān)信息,包括CPU結(jié)構(gòu)、核心數(shù)、線程數(shù)等信息。若顯示的線程數(shù)比核心數(shù)多,則說明超線程技術(shù)已經(jīng)啟用。

2.在BIOS中啟用超線程技術(shù)

如果檢測到超線程技術(shù)未啟用,則需要在計(jì)算機(jī)的BIOS中進(jìn)行設(shè)置,開啟超線程功能(具體步驟可以參考主板說明書)。

3.在操作系統(tǒng)中啟用超線程技術(shù)

在Linux系統(tǒng)中,需要在內(nèi)核啟動參數(shù)中添加參數(shù)“maxcpus=核心數(shù)*線程數(shù)”,以啟用所有的物理核心和超線程核心。

例如,在一個具有4個物理核心和超線程技術(shù)的CPU上,線程數(shù)為8,則在內(nèi)核啟動參數(shù)中添加參數(shù)“maxcpus=32”后,即可啟用所有的物理核心和超線程核心。

4.測試超線程技術(shù)的性能提升

為了驗(yàn)證超線程技術(shù)的性能提升效果,可以使用一些測試工具進(jìn)行測試。例如,可以使用UnixBench測試軟件進(jìn)行測試比較,以評估超線程技術(shù)的性能提升效果。

啟用超線程技術(shù)是提高Linux計(jì)算性能的有效途徑之一。通過利用現(xiàn)代處理器的復(fù)雜執(zhí)行單元和線程調(diào)度算法,可以使CPU更好地利用計(jì)算資源,提高系統(tǒng)運(yùn)行速度和響應(yīng)速度。在實(shí)際應(yīng)用中,也需要根據(jù)具體的應(yīng)用需求和硬件環(huán)境進(jìn)行優(yōu)化,以實(shí)現(xiàn)更佳的性能表現(xiàn)。

相關(guān)問題拓展閱讀:

  • Linux進(jìn)程的調(diào)度

Linux進(jìn)程的調(diào)度

上回書說到 Linux進(jìn)程的由來 和 Linux進(jìn)程的創(chuàng)建 ,其實(shí)在同一時刻只能支持有限個進(jìn)程或線程同時運(yùn)行(這取決于CPU核數(shù)量,基本上一個進(jìn)程對應(yīng)一個CPU),在一個運(yùn)行的操作系統(tǒng)上可能運(yùn)行著很多進(jìn)程,如果運(yùn)行的進(jìn)程占據(jù)CPU的時間很長,就有可能導(dǎo)致其他進(jìn)程餓死。為了解決這種問題,操作系統(tǒng)引入了 進(jìn)程調(diào)度器 來進(jìn)行進(jìn)程的切換,輪流讓各個進(jìn)程使用CPU資源。

1)rq: 進(jìn)程的運(yùn)行隊(duì)列( runqueue), 每個CPU對應(yīng)一個 ,包含自旋鎖(spinlock)、進(jìn)程數(shù)量、用于公平調(diào)度的CFS信息結(jié)構(gòu)、當(dāng)前運(yùn)行的進(jìn)程描述符等。實(shí)際的進(jìn)程隊(duì)列用紅黑樹來維護(hù)(通過CFS信息結(jié)構(gòu)來訪問)。

2)cfs_rq: cfs調(diào)度的進(jìn)程運(yùn)行隊(duì)列信息 ,包含紅黑樹的根結(jié)點(diǎn)、正在運(yùn)行閉森的進(jìn)程指針、用于負(fù)載均衡的葉子隊(duì)列等。

3)sched_entity: 把需要調(diào)度的東西抽象成調(diào)度實(shí)體 ,調(diào)度實(shí)體可以是進(jìn)程、進(jìn)程組、用戶等。這里包含負(fù)載權(quán)重值、對應(yīng)紅黑樹結(jié)點(diǎn)、 虛擬運(yùn)行時vruntime 等。

4)sched_class:把 調(diào)度策略(算法)抽象成調(diào)度類 ,包含一組通用的調(diào)度操作接口。接口和實(shí)現(xiàn)是分離,可以根據(jù)調(diào)度接口去實(shí)現(xiàn)不同的調(diào)度算法,使一個Linux調(diào)度程序可以有多個不同的調(diào)度策略。

1) 關(guān)閉內(nèi)核搶占 ,初始化部分變量。獲取當(dāng)前CPU的ID號,并賦值給局部變量CPU, 使rq指向CPU對應(yīng)的運(yùn)行隊(duì)列 。 標(biāo)識當(dāng)前CPU發(fā)生任務(wù)切換 ,通知RCU更新狀態(tài),如果當(dāng)前CPU處于rcu_read_lock狀態(tài),當(dāng)前進(jìn)程將會放入rnp-> blkd_tasks阻塞隊(duì)列,并呈現(xiàn)在rnp-> gp_tasks鏈表中。 關(guān)閉本地中斷 ,獲取所要保護(hù)的運(yùn)行隊(duì)列的自旋鎖, 為查找可運(yùn)行進(jìn)程做準(zhǔn)備 。

2) 檢查prev的狀態(tài),更新運(yùn)行隊(duì)列 。如果不是可運(yùn)行狀態(tài),而且在內(nèi)核態(tài)沒被搶占,應(yīng)該從運(yùn)行隊(duì)列中 刪除prev進(jìn)程 。如果是非阻塞掛起信號,而且狀態(tài)為TASK_INTER-RUPTIBLE,就把該進(jìn)程的狀態(tài)設(shè)置為TASK_RUNNING,并將它 插入到運(yùn)行隊(duì)列 。

3)task_on_rq_queued(prev) 將pre進(jìn)程插入到運(yùn)行隊(duì)列的隊(duì)尾。

4)pick_next_task 選取將要執(zhí)行的next進(jìn)程。

5)context_switch(rq, prev, next)進(jìn)行 進(jìn)程上下文切換 。

1) 該進(jìn)程分配的CPU時間片用完。

2) 該進(jìn)程主動放棄CPU(例如IO操作)。

3) 某一進(jìn)程搶占CPU獲得執(zhí)行機(jī)會。

Linux并沒有使用x86 CPU自帶的任務(wù)切換機(jī)制,需要通過手工的方式實(shí)現(xiàn)了切換。

進(jìn)程創(chuàng)建后在內(nèi)核的數(shù)據(jù)局銀結(jié)構(gòu)為task_struct , 該結(jié)構(gòu)中有掩碼屬性cpus_allowed,4個核的CPU可以有4位掩碼,如果CPU開啟超線程,有一個8位掩碼,進(jìn)程可以運(yùn)行在掩碼位設(shè)置為1的CPU上。

Linux內(nèi)核API提供了兩個系統(tǒng)調(diào)用 ,讓用戶可以修改和查看當(dāng)前的掩碼:

1) sched_setaffinity():用來修改位掩碼。

2) sched_getaffinity():用來查看當(dāng)前的位掩碼。

在下次task被喚醒時,select_task_rq_fair根據(jù)cpu_allowed里的掩碼來確定將其置于哪個CPU的運(yùn)行隊(duì)列,一個進(jìn)程在某一時刻只能存在于一個CPU的運(yùn)行隊(duì)列里。

在Nginx中,使用了CPU親和度來轎臘畝完成某些場景的工作:

worker_processes;

worker_cpu_affinity000;

上面這個配置說明了4個工作進(jìn)程中的每一個和一個CPU核掛鉤。如果這個內(nèi)容寫入Nginx的配置文件中,然后Nginx啟動或者重新加載配置的時候,若worker_process是4,就會啟用4個worker,然后把worker_cpu_affinity后面的4個值當(dāng)作4個cpu affinity mask,分別調(diào)用ngx_setaffinity,然后就把4個worker進(jìn)程分別綁定到CPU0~3上。

worker_processes;

worker_cpu_affinity;

上面這個配置則說明了兩個工作進(jìn)程中的每一個和2個核掛鉤。

關(guān)于linux 開啟超線程的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。


當(dāng)前題目:Linux超線程啟用,提升計(jì)算性能!(linux開啟超線程)
轉(zhuǎn)載來源:http://www.5511xx.com/article/cdheses.html