• 2

請問要如何得知一個程式是用幾核心在跑?

如題
請問如果買了8核心處理器
要怎麼知道
程式用幾核心在跑
比如說 chrome好了
我要如何得知 他是用幾核心在跑
而不是買了8核心 結果程式只用一個在跑
這要如何得知呢
2018-12-18 7:32 發佈
文章關鍵字 核心 程式
在WINDOWS環境

如果程式在工作管理員裡看到是開多隻同名程式在跑
那就是會用到多核 但由作業系統分配
chrome 就是這種模式 其實是單核,用多開來使用多核,但他們會互相分配工作&交換資料



如果是工作管理員裡看到只有開一個
以4核為例如果程式CPU使用率永遠無法超越25%那就是單核心
你買的CPU是8核 就是 100/8 = 12.5
只要超越13%就是多核程式

我的電腦只有雙核 超過50%就是多核程式

兩個核心也幾乎吃到滿


asdf3164 wrote:
請問如果買了8核心處理器
要怎麼知道
程式用幾核心在跑

風調雨順 國泰民安
我的電腦是四核心
可是開一個網頁chrome
處理程序那邊卻有13個chrome
這是代表...甚麼意思 好難懂QQ
asdf3164 wrote:
我的電腦是四核心可是...(恕刪)

就是你跑程式或遊戲時切去看工作管理員的效能分頁
如果看到一格滿載其餘都沒動代表程式是跑單核心的 如果其他都有動代表跑二核心以上
原來是這樣啊
感謝了!!!
看來chrome支援4核心
以程式的角度來看 一般是不會限制幾個核心跑 也就是說幾乎每個程式都支援多核心

問題是...即使支援多核心 如何均衡的分配工作才是重點

假設是CPU4核心 執行某程式前兩個執行續接近100% 但後面兩個只有2~30%

實際上 四個核心都在做事情 只是前面兩個核心工作分配的比較多所以比較忙

後面兩個核心分配的工作比較少所以看起來比較閒
要看程式怎麼寫,工程師功力,平常來說,使用者光觀察CPU使用率不太準確。。

舉的例子chrome每個分頁都會建立一個執行續。。照理說多核心的CPU上面跑會好些,

簡單來說就是多執行續是會利用不同核心去辦事情的。

所以你開很多分頁你就會看到很多個chrome.exe

假如你喜歡一次開個非常非常多頁,多核心是有幫助的。
其實正確來說Chrome 是單核心架構的程式
每個Chrome 的網頁都是一個單獨的程式
這是設計當時是為了防止某個網頁當掉之後
連累到其他網頁造成整個Chrome 崩潰所設計出來的
早期IE 的設計就是一個IE 的分頁當機就會造成整個IE崩潰
因此為了改善這個問題
Google 就設計Chrome將每個網頁都獨立出來
優點就是一旦某個網頁造成Chrome 當機就只有單個頁面當掉
不會造成其他Chrome 一起當掉
最大的缺點就是開啟多個Chrome 時會耗費大量記憶體
每個Chrome 都有自己獨立的RAM 暫存無法一起共用
在多開Chrome下吃到10G的記憶體也是很正常的現象

在理想狀況下假設開四個網頁
Chrome 1 代碼為C1
Chrome 2 代碼為C2
Chrome 3 代碼為C3
Chrome 4 代碼為C4
在四核心理想狀況下則
第一核心a 應該會分到C1
第二核心b 應該會分到C2
第三核心c 應該會分到C3
第四核心d 應該會分到C4
每個單獨的Chrome 都只會用到一個核心
因此Chrome 不算是支援多核心的程式
在程式中它並會去了解到CPU有幾個核心
而是將資料丟給CPU去運算之後等待資料回傳
可以用到多核心是因為Chrome 每個都是獨立的程式
因此每個Chrome輪流用到四個核心
這是Chrome的設計中並沒有去判斷有核心
因此Chrome不屬於多核心架構的程式

比較理想的程式支援多核心架構是從遊戲部份說明比較恰當
由於Intel 從一代i7開始持續使用4核8緒架構
到七代之前i7最高階都是4核8緒
在2016年前在支援超過4核8緒的遊戲很少
雖然多核心上AMD有真實8核心的
但由於IPC單核效能上落後Intel太多
以至於AMD 八核心在整體性能上也不是Intel i7 四核八緒的對手
因此支援的遊戲也不多
在AMD 2017 Zen架構出來之前大部分的遊戲中Intel的CPU效能都是超過AMD的
因此大部分的遊戲架構為了配合Intel最高都僅支援4核8緒
尤其在同樣Intel 多核心上的 Xeon 上就能很清楚的知道
8核心以上的效能都未能有效發揮
在大部分的遊戲中跑不過高時脈但核心數較少的i7系列
以下面例子
Xeon E5-2675V3 16核心32緒 CPUMARK 15156
i7-4790k 4核心8緒 CPUMARK 11179
如果遊戲程式優化到全部16核心
哪i7肯定不是對手
但實際上i7的在大部分的遊戲中FPS都是超過 E5-2675v3 的


原因就是遊戲其實不支援哪麼多的核心數
多出來的核心效能未能有效發揮

再比如說r7 2700x 八核16緒 CPUMARK 16969
i7 8700k 6核心12緒 CPUMARK 15956
如果遊戲能發揮全部效能
理論上R7 2700x 應該是可以跑贏 i7 8700k
但實際上在大部分的遊戲中 i7 8700k 在同樣配備下遊戲都是跑贏R7 2700x 的
https://kknews.cc/zh-tw/game/6lx3l2v.html
由於遊戲只支援四核八緒在Intel IPC單核心效能較高的情況下
多核心的AMD討不到任何便宜
說是Intel優化也好AMD原罪也罷
總之這情況一時半刻解不了
但在去年度AMD Zen架構崛起後
Intel也因AMD Zen架構整體性能超車七代i7之後
開始朝多核心發展
後續單機遊戲應該也會往更多核心架構發展
就讓我們拭目以待吧
我覺得大家對程式運行的方式有點誤解...

基本上要找到只支援單核心的程式非常困難 幾乎所有程式都支援多核心

一個程式在運行時 實際上會將工作分成數十個或數百個的"執行緒"


CPU實際上是同時處理上千個"執行緒"


每個"執行緒"會占用CPU真實執行緒的一小段時間且不斷的輪替

問題在於每個"執行緒"的工作量是不一樣的 有的複雜有的簡單
所以才會造成某些真實執行緒比較忙碌的原因

想要了解更多 這邊有比較詳盡的解釋多執行緒

單核心CPU 測試軟體
CPUMARK 99
測試狀況

這就是典型單核心測試軟體
在未開啟HT的情況下就只有一個CPU會有動作
另外一個CPU處於閒置狀態



執行緒只有1
在開啟HT之後會有兩個超值執行序有動作
但還單個核心在處理
CPU使用率50%



想進一步了解多核心多執行序對遊戲的影響
可以看一下這篇
https://www.gcores.com/articles/102084
節錄一段我想說明的
在一款射击游戏里,假设第一个 CPU 核心负责子弹轨迹的运算,第二个核心负责声音资源的调度,第三个核心负责材质贴图的替换(实际上不会有游戏这么干),那么仅仅玩家开枪这一个动作就需要三个核心的互相通信与数据传递,如果这一过程中任意一个核心出了问题,那么其余两个核心就可能出现问题,反应到游戏体验上,要么是玩家开了枪没出声音,或者是打到墙上,墙面岿然不动。当然实际中的游戏程序设计要比这个复杂很多,更多的核心参与带来的不一定是性能的提升,更可能是性能损失。从单核到双核优化如果难度是翻倍,那么双核到四核,甚至六核那么对于程序维护的难度可能就是十倍、二十倍。

這就是難處為什麼以前的大作大部分只支援到四核心

Kenny_Din說的是前面哪段

现在主流的程序语言都是“高级编程语言”,而CPU所能处理的都是“辣鸡编程语言”,不对,是机器语言,也就是0和1。程序员们为了让自己的生活变得轻松一点,将底层硬件所能识别的机器语言抽象包装成便于人类理解和使用的各类高级程序语言,现代主流的游戏引擎与游戏程序的编写都是基于高级程序语言来实现。这些高级语言编写的程序经过各种编译器、解释器翻译成 CPU 能理解的机器语言后,CPU 才可以真正开始自己的工作。


而在这一过程中,单个CPU核心的工作流程如上文所说,是线性的。早期 CPU 一次只能执行一条机器语言命令,这些命令我们一般称为指令。CPU 执行一条指令可能需要几个核心周期,而核心频率很大程度上决定了 CPU 执行指令的速度。


当游戏程序的各种指令被转换成机器语言后,依次被 CPU 执行,在 CPU 底层设计架构相同的情况下,更高的核心频率可以在单位时间内执行处理的指令数目更多。

執行緒是在軟體層面模擬CPU而已
真正在硬體層面跑就是會依照CPU底層設計架構下去執行



反映到游戏上来可以通过一个简单的例子来进行理解: 当我们释放一个火焰系范围伤害技能,击杀了1000个毒蜘蛛,而这毒蜘蛛死亡后会掉下蜘蛛卵,残留在地上的火焰效果持续灼烧这些掉落的蜘蛛卵,有些被烧没了,有些则孵化出了新的蜘蛛。


在这一个技能效果研判过程中,CPU 需要计算哪些卵被消灭, 哪些又没有,同时新孵化出的蜘蛛会不会继续受到地形火焰的伤害。如果游戏程序没有对这个机制做多线程、多核心优化,在 CPU 主频频率不够高的情况下,这一计算过程就可能产生问题。因为 CPU 核心需要在不断处理游戏程序内其他任务请求的同时,进行如此高密度的计算,计算结果的传递的延迟可能会过高,影响显卡正确渲染及游戏画面的输出。


这也是为什么即时战略游戏后期大范围、兵种数量巨大的会战很容易出现掉帧的原因,海量的数据短时间内需要输入到 CPU 核心内,如果是优化不到位的游戏,高主频的 CPU 会有巨大的优势,以各种国产网络游戏最为明显。这些游戏往往场景内玩家、NPC、敌人数量众多,动辄几十人的副本瞬间释放大量游戏技能,由于底层程序一般没有针对多线程进行优化,单核性能与核心频率就变得十分重要。高主频的 CPU 可以更快地处理瞬间暴增的指令数量,让游戏运行的更加流畅。

這就是為什麼低頻CPU Xeon 核心數量多卻在遊戲上表現較i7不好的主要原因

核心频率并不是决定 CPU 对游戏性能影响的全部,x86 架构经过40年的发展,Intel 不仅将 CPU 核心内部对于指令处理速度做了非常多的优化,还在指令被处理之前也有很多巧妙的设计,甚至针对某些常用的指令以硬件电路的形式做了针对性的强化。种种措施让 Intel 的处理器在很长一段时间里,以较低的频率和较少的核心在性能上压倒自己的竞争对手。

有興趣的樓主可以自己看完
Chrome 一個程序出錯頂多就是單一網頁當機
因此使用超多執行緒也沒有關係
但在遊戲裡面完全不是這麼一回事
所謂的使用幾核心在跑可以自己判斷
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?