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

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

新聞中心

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

Linux是一種輕量級(jí)操作系統(tǒng),廣泛應(yīng)用于服務(wù)器、工作站和嵌入式設(shè)備等領(lǐng)域。它具有安全性高、穩(wěn)定性好、靈活性強(qiáng)等優(yōu)勢(shì),因此得到了廣泛的應(yīng)用。但是,對(duì)于需要大量計(jì)算的應(yīng)用場(chǎ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í)行單元,通過(guò)同時(shí)執(zhí)行多個(gè)線程來(lái)提高處理器的利用率和計(jì)算性能。在Linux系統(tǒng)中啟用超線程技術(shù)可以使得CPU能夠更有效地利用計(jì)算資源,提高系統(tǒng)的運(yùn)行速度和響應(yīng)速度。

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

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

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

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

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

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

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

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

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

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

啟用超線程技術(shù)是提高Linux計(jì)算性能的有效途徑之一。通過(guò)利用現(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)問(wèn)題拓展閱讀:

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

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

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

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

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)重值、對(duì)應(yīng)紅黑樹結(jié)點(diǎn)、 虛擬運(yùn)行時(shí)vruntime 等。

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

1) 關(guān)閉內(nèi)核搶占 ,初始化部分變量。獲取當(dāng)前CPU的ID號(hào),并賦值給局部變量CPU, 使rq指向CPU對(duì)應(yīng)的運(yùn)行隊(duì)列 。 標(biāo)識(shí)當(dāng)前CPU發(fā)生任務(wù)切換 ,通知RCU更新狀態(tài),如果當(dāng)前CPU處于rcu_read_lock狀態(tài),當(dāng)前進(jìn)程將會(huì)放入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)沒(méi)被搶占,應(yīng)該從運(yùn)行隊(duì)列中 刪除prev進(jìn)程 。如果是非阻塞掛起信號(hào),而且狀態(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時(shí)間片用完。

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

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

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

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

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

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

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

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

在Nginx中,使用了CPU親和度來(lái)轎臘畝完成某些場(chǎng)景的工作:

worker_processes;

worker_cpu_affinity000;

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

worker_processes;

worker_cpu_affinity;

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

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

成都創(chuàng)新互聯(lián)建站主營(yíng):成都網(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)式移動(dòng)網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。


名稱欄目:Linux超線程啟用,提升計(jì)算性能!(linux開啟超線程)
文章URL:http://m.5511xx.com/article/cdheses.html