《性能調(diào)優(yōu)攻略|系統(tǒng)調(diào)優(yōu)》要點:
本文介紹了性能調(diào)優(yōu)攻略|系統(tǒng)調(diào)優(yōu),希望對您有用。如果有疑問,可以聯(lián)系我們。
我們都知道,Unix/Linux 下把所有的設(shè)備都當成文件來進行 I/O,所以大部分操作都是 I/O 相關(guān)的系統(tǒng)調(diào)用.主要的 I/O 方式如下:
同步阻塞式 I/O;
同步無阻塞式;
I/O 異步;
AIO 方式.這種 I/O 模型是一種處理與I/O 并行的模型.I/O 哀求會立即返回,說明哀求已經(jīng)成功發(fā)起.
AIO 方式因為沒有任務(wù)的阻塞,無論是 I/O,還是事件通知上,都可以充分利用 CPU,比起同步無阻塞好處就是不需要輪詢.
Nignx 的高效,就是通過使用 epoll 的 AIO 方式來進行 I/O 的.
關(guān)于 CPU 的多核技術(shù),我們知道,CPU0是很關(guān)鍵,如果0號 CPU 利用率比較高,則性能下降比較利害,因為 CPU0具有調(diào)整功能,所以,不能任由操作系統(tǒng)負載均衡.通過手動分配 CPU 核,讓其不過多占用 CPU0,或者通過分離關(guān)鍵進程和非關(guān)鍵進程各占其核.
多核CPU 還有一個技術(shù)叫 NUMA 技術(shù)(Non-Uniform Memory Access).傳統(tǒng)的多核運算是使用 SMP(Symmetric Multi-Processor)模型,多個處理器共享一個集中的存儲器和I/O 總線.因此才會有一致存儲器拜訪的問題,一致性意味著性能問題.
在 Linux 下,對 NUMA 調(diào)優(yōu)的命令是:numactl.如下面的命令:(指定命令“program arg1 arg2”運行在node 0 上,其內(nèi)存分配在node 0 和 1上)
numactl --cpubind=0 --membind=0,1 program arg1 arg2
上面這個命令并不好,因為內(nèi)存跨越了兩個node,這非常不好.最好的方式是只讓程序拜訪和自己運行一樣的node,如:
numactl --membind 1 --cpunodebind 1 --localalloc application
關(guān)于文件系統(tǒng),因為文件系統(tǒng)也是有 cache 的,所以,為了文件系統(tǒng)有最大的性能.首要的事情就是分配足夠大的內(nèi)存,這個非常關(guān)鍵,在 Linux 下可以使用 free 命令來查看 free/used/buffers/cached,總的來說,buffers 和 cached 應(yīng)該有40%左右.目前速度比較快還 Intel SSD 固態(tài)硬盤,但是寫次數(shù)有限.
對于文件系統(tǒng)調(diào)優(yōu),是通過修改配置,對于 Linux 的 Ext3/4來說,幾乎在所胡情況下都有所幫助的一個參數(shù)是關(guān)閉文件系統(tǒng)拜訪時間,在/etc/fstab 下可以看文件系統(tǒng)有沒有 noatime 參數(shù),還有一個是 dealloc,它可以讓系統(tǒng)在最后時刻決定寫入文件發(fā)生時使用哪個塊,可優(yōu)化這個寫入程序.
對于日志模式:joumal、ordered、writeback.默認設(shè)置 data=ordered 提供性能和防護之間的最佳平衡.對于 Ext4默認設(shè)置基本上是最佳優(yōu)化了.
在 Linux 下查看 I/O 的使用——iotop,可以幫助你查看各個進程的磁盤讀寫負載情況.
真正提高 I/O 性能方式是把和外設(shè) I/O 的次數(shù)降到最低,最好沒有.通常對于讀來說,內(nèi)存 cache 可以從質(zhì)上提升性能,因為內(nèi)存比外設(shè)快太多.對于寫來說,cache 主要寫的數(shù)據(jù),少寫幾次,但是 cache 帶來的問題就是實時性的問題,也就是 Latency 會變大.我們就需要在寫的次數(shù)上做相應(yīng)平衡.
謝謝!大家讀完此文,歡迎大家留言討論系統(tǒng)調(diào)優(yōu)過程中還有哪些辦理方案.
《性能調(diào)優(yōu)攻略|系統(tǒng)調(diào)優(yōu)》是否對您有啟發(fā),歡迎查看更多與《性能調(diào)優(yōu)攻略|系統(tǒng)調(diào)優(yōu)》相關(guān)教程,學精學透。維易PHP學院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/7851.html