{"id":1537,"date":"2021-10-12T00:32:39","date_gmt":"2021-10-12T07:32:39","guid":{"rendered":"https:\/\/www.xh86.me\/?p=1537"},"modified":"2021-10-12T00:32:39","modified_gmt":"2021-10-12T07:32:39","slug":"proxmox-ve-%e6%8e%a7%e5%88%b6%e9%9d%a2%e6%9d%bf%e6%b7%bb%e5%8a%a0cpu%e6%b8%a9%e5%ba%a6%e3%80%81%e9%a2%91%e7%8e%87%e6%98%be%e7%a4%ba","status":"publish","type":"post","link":"https:\/\/www.xh86.me\/?p=1537","title":{"rendered":"Proxmox VE \u63a7\u5236\u9762\u677f\u6dfb\u52a0CPU\u6e29\u5ea6\u3001\u9891\u7387\u663e\u793a"},"content":{"rendered":"<p>PVE\u9ed8\u8ba4\u6982\u8981\u4e2d\u53ea\u663e\u793aCPU\u5229\u7528\u7387\u3001\u5e73\u5747\u8d1f\u8f7d\u3001\u5185\u5b58\u4f7f\u7528\u7387\u3001\u786c\u76d8\u7a7a\u95f4\u3001CPU\u578b\u53f7\u3001\u5185\u6838\u7248\u672c\u3001\u7ba1\u7406\u7248\u672c\u7b49\uff0c\u4e0b\u9762\u7684\u6559\u7a0b\u5c06\u6dfb\u52a0\u4e0aCPU\u6e29\u5ea6\u4ee5\u53ca\u9891\u7387\u4fe1\u606f\u3002<\/p>\n<p>\u6ce8\u610f\uff1aPVE\u66f4\u65b0\u540e\u4f1a\u6062\u590d\u6e05\u9664\u4ee3\u7801\u3002<\/p>\n<p>\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n<p>1\u3001\u6dfb\u52a0CPU\u6e29\u5ea6<\/p>\n<p>\u5728PVE\u7684Shell\u4e0b\u8fd0\u884c<\/p>\n<pre>apt-get install lm-sensors<\/pre>\n<p>\u5b89\u88c5\u5b8c\u6210\u540e\u8fd0\u884csensors-detect\u67e5\u770b\u52a0\u8f7d\u6a21\u5757\uff0c\u9ed8\u8ba4\u5168Yes\u5373\u53ef\u3002<\/p>\n<p>\u8f93\u5165sensors\u663e\u793a\u7cfb\u7edf\u8fd0\u884c\u7684\u6e29\u5ea6\u72b6\u6001\u3002<\/p>\n<pre>root@proxmox:~# sensors\r\nqlcnic-pci-0101\r\nAdapter: PCI adapter\r\ntemp1:        +79.0\u00b0C  \r\n\r\nacpitz-acpi-0\r\nAdapter: ACPI interface\r\ntemp1:        +27.8\u00b0C  (crit = +90.0\u00b0C)\r\ntemp2:        +29.8\u00b0C  (crit = +90.0\u00b0C)\r\n\r\ncoretemp-isa-0000\r\nAdapter: ISA adapter\r\nPackage id 0:  +51.0\u00b0C  (high = +79.0\u00b0C, crit = +85.0\u00b0C)\r\nCore 0:        +51.0\u00b0C  (high = +79.0\u00b0C, crit = +85.0\u00b0C)\r\nCore 1:        +47.0\u00b0C  (high = +79.0\u00b0C, crit = +85.0\u00b0C)\r\n\r\nqlcnic-pci-0100\r\nAdapter: PCI adapter\r\ntemp1:        +79.0\u00b0C<\/pre>\n<p>\u767b\u5f55SecureFX\u6253\u5f00\/usr\/share\/perl5\/PVE\/API2\uff0c<\/p>\n<figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815494659.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815494659.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" sizes=\"auto, (max-width: 816px) 100vw, 816px\"  alt=\"Proxmox VE\u7cfb\u5217\u6559\u7a0b\u4e4b\uff08\u4e09\uff09\u63a7\u5236\u9762\u677f\u6dfb\u52a0CPU\u6e29\u5ea6\u3001\u9891\u7387\u663e\u793a-\u6f2b\u7bc9\" width=\"816\" height=\"409\" data-src=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815494659.png\" data-nclazyload=\"true\" data-srcset=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815494659.png 816w, https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815494659-300x150.png 300w, https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815494659-768x385.png 768w\" data-sizes=\"(max-width: 816px) 100vw, 816px\" data-was-processed=\"true\" \/><\/div><\/figure>\n<p>\u590d\u5236\u5907\u4efdNodes.pm\u4e3aNodes.pm.bak,\u4f7f\u7528Notepad++\u6253\u5f00Nodes.pm\uff0cCtrl+F\u641c\u7d22PVE::pvecfg::version_text();<\/p>\n<p>\u6dfb\u52a0\u4ee3\u7801$res-&gt;{thermalstate} = `sensors`;\u5230\u5982\u4e0b\u4f4d\u7f6e\uff0c<\/p>\n<pre>\t$res-&gt;{pveversion} = PVE::pvecfg::package() . \"\/\" .\r\n\t    PVE::pvecfg::version_text();\r\n\r\n\tmy $dinfo = df('\/', 1);     # output is bytes\r\n        $res-&gt;{thermalstate} = `sensors`;\r\n\t\t \r\n\t$res-&gt;{rootfs} = {\r\n\t    total =&gt; $dinfo-&gt;{blocks},\r\n\t    avail =&gt; $dinfo-&gt;{bavail},\r\n\t    used =&gt; $dinfo-&gt;{used},\r\n\t    free =&gt; $dinfo-&gt;{blocks} - $dinfo-&gt;{used},\r\n\t};<\/pre>\n<p>\u6253\u5f00\/usr\/share\/pve-manager\/js\/\uff0c<\/p>\n<figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815524550.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815524550.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" sizes=\"auto, (max-width: 816px) 100vw, 816px\"  alt=\"Proxmox VE\u7cfb\u5217\u6559\u7a0b\u4e4b\uff08\u4e09\uff09\u63a7\u5236\u9762\u677f\u6dfb\u52a0CPU\u6e29\u5ea6\u3001\u9891\u7387\u663e\u793a-\u6f2b\u7bc9\" width=\"816\" height=\"327\" data-src=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815524550.png\" data-nclazyload=\"true\" data-srcset=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815524550.png 816w, https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815524550-300x120.png 300w, https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032815524550-768x308.png 768w\" data-sizes=\"(max-width: 816px) 100vw, 816px\" data-was-processed=\"true\" \/><\/div><\/figure>\n<p>\u590d\u5236\u5907\u4efdpvemanagerlib.js\u4e3apvemanagerlib.js.bak,\u4f7f\u7528Notepad++\u6253\u5f00pvemanagerlib.js\uff0c<\/p>\n<p>Ctrl+F\u641c\u7d22widget.pveNodeStatus\uff0c<\/p>\n<p>\u66f4\u6539\u4ee3\u7801height: 300\u4e3aheight: 350\u3002<\/p>\n<pre>Ext.define('PVE.node.StatusView', {\r\n    extend: 'PVE.panel.StatusView',\r\n    alias: 'widget.pveNodeStatus',\r\n\r\n    height: 350,\r\n    bodyPadding: '20 15 20 15',\r\n\r\n    layout: {\r\n\ttype: 'table',\r\n\tcolumns: 2,\r\n\ttableAttrs: {\r\n\t    style: {\r\n\t\twidth: '100%'\r\n\t    }\r\n\t}\r\n    },<\/pre>\n<p>Ctrl+F\u641c\u7d22var win = Ext.create(&#8216;Ext.window.Window&#8217;, {<\/p>\n<p>\u66f4\u6539\u4ee3\u7801height: 400,\u4e3aheight: 420,<\/p>\n<pre>\tshowLog: function(button, event, rec) {\r\n\t    var me = this.getView();\r\n\t    var controller = this;\r\n\t    var logView = Ext.create('Proxmox.panel.LogView', {\r\n\t\tborder: false,\r\n\t\turl: \"\/api2\/extjs\/nodes\/\" + me.nodename + \"\/replication\/\" + rec.data.id + \"\/log\"\r\n\t    });\r\n\t    var win = Ext.create('Ext.window.Window', {\r\n\t\titems: [ logView ],\r\n\t\tlayout: 'fit',\r\n\t\twidth: 800,\r\n\t\theight: 420,\r\n\t\tmodal: true,\r\n\t\ttitle: gettext(\"Replication Log\")\r\n\t    });\r\n\t    var task = {<\/pre>\n<p>Ctrl+F\u641c\u7d22textField: &#8216;pveversion&#8217;,\u5c06\u4ee3\u7801\u66f4\u6539\u5982\u4e0b\uff1a<\/p>\n<pre>\t{\r\n\t    itemId: 'version',\r\n\t    colspan: 2,\r\n\t    printBar: false,\r\n\t    title: gettext('PVE Manager Version'),\r\n\t    textField: 'pveversion',\r\n\t    value: ''\r\n\t},    #\u8bb0\u5f97\u6dfb\u52a0\u9017\u53f7\r\n    {\r\n        itemId: 'thermal',\r\n        colspan: 2,\r\n        printBar: false,\r\n        title: gettext('CPU \u6e29\u5ea6'),\r\n        textField: 'thermalstate',\r\n        renderer:function(value){\r\n        const c0 = value.match(\/Core 0.*?\\+([\\d\\.]+)\u00c2\/)[1];\r\n        const c1 = value.match(\/Core 1.*?\\+([\\d\\.]+)\u00c2\/)[1];\r\n\t\tconst d0 = value.match(\/Package id 0.*?\\+([\\d\\.]+)\u00c2\/)[1];\r\n        return `Package 0: ${d0} \u2103 | Core 0: ${c0} \u2103 | Core 1: ${c1} \u2103`\r\n        }\r\n\t}\r\n    ],\r\n\r\n    updateTitle: function() {\r\n\tvar me = this;\r\n\tvar uptime = Proxmox.Utils.render_uptime(me.getRecordValue('uptime'));<\/pre>\n<p>\u4fee\u6539\u5b8c\u6210\u540e\uff0c\u5728Shell\u4e2d\u8f93\u5165systemctl restart pveproxy\u91cd\u542fPVE\u7684Web\u7ba1\u7406\u670d\u52a1\u4f7f\u4fee\u6539\u751f\u6548\u3002<\/p>\n<p>2\u3001\u6dfb\u52a0CPU\u9891\u7387\u663e\u793a<\/p>\n<p>\u767b\u5f55SecureFX\u6253\u5f00\/usr\/share\/perl5\/PVE\/API2\uff0c\u590d\u5236\u5907\u4efdNodes.pm\u4e3aNodes.pm.bak,\u4f7f\u7528Notepad++\u6253\u5f00Nodes.pm\uff0c<\/p>\n<p>\u5728$res-&gt;{thermalstate} = `sensors`;\u4e0b\u8d77\u4e00\u884c$res-&gt;{cpusensors} = lscpu | grep MHz;<\/p>\n<p>\u4ee3\u7801\u5982\u4e0b<\/p>\n<pre>\t$res-&gt;{pveversion} = PVE::pvecfg::package() . \"\/\" .\r\n\t    PVE::pvecfg::version_text();\r\n\r\n\tmy $dinfo = df('\/', 1);     # output is bytes\r\n        $res-&gt;{thermalstate} = `sensors`;\r\n\t\t$res-&gt;{cpusensors} = `lscpu | grep MHz`;\r\n\t\t \r\n\t$res-&gt;{rootfs} = {\r\n\t    total =&gt; $dinfo-&gt;{blocks},\r\n\t    avail =&gt; $dinfo-&gt;{bavail},\r\n\t    used =&gt; $dinfo-&gt;{used},\r\n\t    free =&gt; $dinfo-&gt;{blocks} - $dinfo-&gt;{used},\r\n\t};<\/pre>\n<p>Ctrl+F\u641c\u7d22textField: &#8216;pveversion&#8217;,\u5c06\u4ee3\u7801\u66f4\u6539\u5982\u4e0b\uff1a<\/p>\n<pre>\t{\r\n\t    itemId: 'version',\r\n\t    colspan: 2,\r\n\t    printBar: false,\r\n\t    title: gettext('PVE Manager Version'),\r\n\t    textField: 'pveversion',\r\n\t    value: ''\r\n\t},    #\u8bb0\u5f97\u6dfb\u52a0\u9017\u53f7\r\n    {\r\n        itemId: 'thermal',\r\n        colspan: 2,\r\n        printBar: false,\r\n        title: gettext('\u8bbe\u5907 \u6e29\u5ea6'),\r\n        textField: 'thermalstate',\r\n        renderer:function(value){\r\n        const c0 = value.match(\/Core 0.*?\\+([\\d\\.]+)\u00c2\/)[1];\r\n        const c1 = value.match(\/Core 1.*?\\+([\\d\\.]+)\u00c2\/)[1];\r\n\t\tconst d0 = value.match(\/Package id 0.*?\\+([\\d\\.]+)\u00c2\/)[1];\r\n        return `Package 0: ${d0} \u2103 | Core 0: ${c0} \u2103 | Core 1: ${c1} \u2103`\r\n        }\r\n\t},    #\u8bb0\u5f97\u6dfb\u52a0\u9017\u53f7\r\n\t{\r\n        itemId: 'MHz',\r\n        colspan: 2,\r\n        printBar: false,\r\n        title: gettext('CPU \u9891\u7387'),\r\n        textField: 'cpusensors',\r\n        renderer:function(value){\r\n        const f0 = value.match(\/CPU MHz.*?([\\d]+)\/)[1];\r\n\t\tconst f1 = value.match(\/CPU min MHz.*?([\\d]+)\/)[1];\r\n        const f2 = value.match(\/CPU max MHz.*?([\\d]+)\/)[1];\r\n        return `CPU Time: ${f0} MHz | Min: ${f1} MHz  | Max: ${f2} MHz`\r\n        }\r\n\t}\r\n    ],<\/pre>\n<p>\u4fee\u6539\u5b8c\u6210\u540e\uff0c\u5728Shell\u4e2d\u8f93\u5165systemctl restart pveproxy\u91cd\u542fPVE\u7684Web\u7ba1\u7406\u670d\u52a1\u4f7f\u4fee\u6539\u751f\u6548\u3002<\/p>\n<p>\u6548\u679c\u5982\u4e0b\uff1a<\/p>\n<figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032816151389.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032816151389.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" sizes=\"auto, (max-width: 1004px) 100vw, 1004px\"  alt=\"Proxmox VE\u7cfb\u5217\u6559\u7a0b\u4e4b\uff08\u4e09\uff09\u63a7\u5236\u9762\u677f\u6dfb\u52a0CPU\u6e29\u5ea6\u3001\u9891\u7387\u663e\u793a-\u6f2b\u7bc9\" width=\"1004\" height=\"339\" data-src=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032816151389.png\" data-nclazyload=\"true\" data-srcset=\"https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032816151389.png 1004w, https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032816151389-300x101.png 300w, https:\/\/www.buildiffuse.com\/wp-content\/uploads\/2021\/03\/2021032816151389-768x259.png 768w\" data-sizes=\"(max-width: 1004px) 100vw, 1004px\" data-was-processed=\"true\" \/><\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>PVE\u9ed8\u8ba4\u6982\u8981\u4e2d\u53ea\u663e\u793aCPU\u5229\u7528\u7387\u3001\u5e73\u5747\u8d1f\u8f7d\u3001\u5185\u5b58\u4f7f\u7528\u7387\u3001\u786c\u76d8\u7a7a\u95f4\u3001CPU\u578b\u53f7\u3001\u5185\u6838\u7248\u672c\u3001\u7ba1\u7406\u7248\u672c\u7b49\uff0c\u4e0b\u9762\u7684\u6559 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-1537","post","type-post","status-publish","format-standard","hentry","category-proxmox"],"_links":{"self":[{"href":"https:\/\/www.xh86.me\/index.php?rest_route=\/wp\/v2\/posts\/1537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xh86.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xh86.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xh86.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xh86.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1537"}],"version-history":[{"count":1,"href":"https:\/\/www.xh86.me\/index.php?rest_route=\/wp\/v2\/posts\/1537\/revisions"}],"predecessor-version":[{"id":1538,"href":"https:\/\/www.xh86.me\/index.php?rest_route=\/wp\/v2\/posts\/1537\/revisions\/1538"}],"wp:attachment":[{"href":"https:\/\/www.xh86.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xh86.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xh86.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}