乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      榨干 Python 代碼的性能——第一部分之環(huán)境設(shè)置

       silence_33 2017-07-23

      這是“榨干 Python 代碼性能”系列的第一篇文章,接下來我會(huì)通過一篇篇文章分別來介紹一些 Python 代碼的工具和解釋器,以及它們是如何更好地幫助開發(fā)者在前端(Python 腳本)或者后端(Python 解釋器)中找到性能瓶頸。


      設(shè)置環(huán)境

      在進(jìn)行基準(zhǔn)測(cè)試和分析之前,我們首先需要準(zhǔn)備好環(huán)境。這意味著計(jì)算機(jī)和操作系統(tǒng)都要事先配置好。

      以普遍情況來說,我的計(jì)算機(jī)配置如下:

      處理器:Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz

      內(nèi)存:32GB

      操作系統(tǒng):Ubuntu 16.04 LTS

      系統(tǒng)內(nèi)核:4.4.0-75-Generic

      為了實(shí)現(xiàn)代碼可重用的目標(biāo),從而確保數(shù)據(jù)不會(huì)被其它后臺(tái)進(jìn)程所干擾,我們就必須優(yōu)化好操作系統(tǒng)配置或增強(qiáng)其硬件性能。

      那就從配置計(jì)算機(jī)開始吧。

      硬件功能

      首先,禁用所有硬件功能特性,這意味著也要在BIOS或UEFI中關(guān)閉Intel Turbo Boost和超線程功能。

      正如官網(wǎng)所述,Turbo Boost是當(dāng)處理器在小于功率、電流和溫度規(guī)格限制的情況下,自動(dòng)提升其運(yùn)行速度的一種技術(shù)。而超線程是允許在每個(gè)核心上運(yùn)行多個(gè)線程以達(dá)到高效使用處理器資源的另一種技術(shù)。

      對(duì)于好技術(shù),我們真的希望把它們運(yùn)用在生產(chǎn)中,既然如此,那為什么不在基準(zhǔn)測(cè)試和分析的時(shí)候啟用它們呢?因?yàn)檫@樣做我們就無法從代碼運(yùn)行的變量中得出其可靠性和可重用性的結(jié)果。說了這么多,讓我們看看下面這個(gè)小例子吧,我把它命名為primes.py,并且代碼被故意寫得很垃圾。。。。

      代碼也可以在GitHub上找到。代碼需要以下依賴項(xiàng),請(qǐng)先安裝:

      接下來就能在啟用了Turbo Boost和超線程的系統(tǒng)中運(yùn)行它:

      現(xiàn)在,讓我們?cè)囋囮P(guān)閉Turbo Boost和超線程,并再次運(yùn)行它:

      通過觀察可以發(fā)現(xiàn),第一種情況的標(biāo)準(zhǔn)差是15%,這個(gè)誤差太大了,假設(shè)代碼優(yōu)化后提速了6%,那么我們要分辨出是偶然變化的誤差還是我們的優(yōu)化效果就很難了。

      第二種情況下的標(biāo)準(zhǔn)差就降低到了0.6%,那么我們的優(yōu)化效果就很容易被觀察到了。


      CPU功耗的降低


      禁用所有的CPU節(jié)能選項(xiàng)并且使用一個(gè)固定的CPU頻率,這樣做可以通過改變Linux的電源管理來達(dá)到把intel_pstate修改成acpi_cpufreq的目的。


      intel_pstate驅(qū)動(dòng)程序可以借助Intel Core內(nèi)部的調(diào)節(jié)驅(qū)動(dòng)程序達(dá)到縮放的效果,而acpi_cpufreq驅(qū)動(dòng)程序則利用了ACPI處理器的性能狀態(tài)。


      讓我們先來看看一個(gè)例子:

      可以看到,啟用powersave,并且設(shè)置CPU頻率在1.20 GHz和3.60 GHz之間是有利于我們?nèi)粘J褂糜?jì)算機(jī)的,但是在做基準(zhǔn)測(cè)試的時(shí)候結(jié)果會(huì)變得比較糟糕。


      既然如此,那調(diào)節(jié)器有什么用處呢?查閱文檔,我們發(fā)現(xiàn):

      • performance - CPU以最高頻率運(yùn)行。

      • powersave - CPU以最低頻率運(yùn)行。

      • userspace - CPU以用戶指定的頻率運(yùn)行。

      • ondemand - 根據(jù)當(dāng)前負(fù)載動(dòng)態(tài)縮放頻率。首先跳轉(zhuǎn)到最高頻率,然后隨著時(shí)間的推移逐漸降低頻率。

      • conservative - 根據(jù)當(dāng)前負(fù)載動(dòng)態(tài)縮放頻率。頻率切換比ondemand更加頻繁。


      我們想要做的是把性能調(diào)節(jié)器設(shè)置到CPU所支持的最高頻率,就像這樣:

      現(xiàn)在我們需要把調(diào)節(jié)器設(shè)置成performance,并且把CPU的工作頻率固定至2.3 GHz,這個(gè)值是Xeon E5-2699 v3在禁用Turbo Boost的情況下所能使用的最大值了。


      如果要設(shè)置所有的內(nèi)容,以管理員權(quán)限運(yùn)行下面的代碼:


      如果沒有安裝cpupower,請(qǐng)安裝它:


      電源管理對(duì)CPU的影響很大。在默認(rèn)情況下,電源管理器會(huì)自動(dòng)調(diào)節(jié)頻率以降低功耗,但是我們并不希望它這樣做,因此我們可以在GRUB中禁用它,只要修改/boot/grub/grub.cfg或者在/etc/grub.d/40_custom中新建一個(gè)新的內(nèi)核條目就可以了。我們的引導(dǎo)行必須包含intel_pstate=disable這樣的標(biāo)志,就像這樣:


      ASLR(地址空間規(guī)劃隨機(jī)器)


      這個(gè)設(shè)置備受爭(zhēng)議,你可以在Victor Stinner的帖子中得到證實(shí)。當(dāng)我們?cè)诨鶞?zhǔn)測(cè)試時(shí)第一次建議禁用ASLR的時(shí)候,我們是在CPython中的按配置進(jìn)行優(yōu)化的支持下實(shí)施的。


      在以上提到的特定的硬件中,禁用ASLR確實(shí)可以略為提升0.4%的性能,這也就是我們建議這樣做的原因。


      另一方面,在我的個(gè)人計(jì)算機(jī)上測(cè)試(Intel Core i7 4710MQ),禁用ASLR確實(shí)會(huì)出現(xiàn)帖子中所出現(xiàn)的情況。在更小的CPU上上測(cè)試(Intel Atom)的結(jié)果表明,我們也應(yīng)該啟用ASLR,而不是取消它。


      由于它涉及具體的軟硬件配置,所以它并不總是可用,所以需要我們分別對(duì)開啟和關(guān)閉測(cè)試,比較之后再?zèng)Q定是否開啟。


      在我的機(jī)器上,我通過修改全局配置文件/etc/sysctl.conf來禁用它,需要使用sudo sysctl -p。


      如果你要在運(yùn)行的時(shí)候禁用它:


      如果你要再次啟用它:



      英文原文:https://pythonfiles./2017/05/15/hunting-python-performance-setup/
      譯者:飛馳的麒麟


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多