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