做爲一個程序猿,不管咱們未來想要往哪一個方向攀登,若是沒有好的基礎知識是會很吃力的,因此打下良好的基礎必不可少。在我看來,從事 IT 行業的技術工種,有如下基礎知識是剛需:linux
根據馮諾依曼計算機結構體系,計算機就是一個輸入輸出的設備,咱們輸入待處理的數據,經由計算機處理後獲得咱們想要的結果。那麼說白了做爲程序員咱們就是經過各類手段操控這個設備,天然而然的,想要把這個機器玩的很溜是須要了解這個機器的原理的,因此咱們須要學習計算機原理。程序員
在瞭解了計算機的原理後,咱們如何去操做他呢,固然是經過編程的手段了,這裏我說的編程是廣義上的編程,不要覺得只有寫段 C 的代碼纔是編程,命令行輸入指令就不是編程了,命令其實也是編程,由於他們二者最終都是翻譯成機器指令由計算機來執行。算法
一樣地,這臺機器他的性能是有限的,咱們只知道怎麼經過編程操做它遠遠不夠,咱們須要學一些騷操做來提高效率和速度,那麼咱們就須要學算法了。說白了,就好像兩個工人操做一個機器,其中一個工人會搞一些很溜的操做,讓這個機器的效率更高,執行速度更快,還能搞一些高階玩法,若是這個工廠只能留下一我的,你以爲最終會留下誰呢?編程
在有了上面這三類基礎知識後,咱們對於單臺機器的操做能夠說是入門了,可是咱們如今身處的世界是萬物互聯的世界,計算機須要與計算機之間進行協做,那麼就須要學習計算機網絡。性能優化
而我最近出於工做緣由,一直在學習 Linux 的性能優化。Linux 性能優化的範圍涉及很是廣,從軟件到硬件、從編程到網絡都有涉及到,有不少的基礎知識,而對於很廣的知識,我以爲須要一條線來串聯起來,才能造成一個體系的知識結構。因此我會把在這過程當中學到的知識,加上平時工做中的實踐,提煉成博客寫出來。網絡
首先分析 CPU 的性能問題,當咱們發現有 CPU 的性能問題,第一時間是幹什麼呢?固然是查看總體的 CPU 使用狀況,當查看 CPU 的總體狀況後,而後再分析究竟是哪一種狀況致使 CPU 的負載很高,最後找到致使 CPU 負載升高的罪魁禍首。那麼咱們接下來就按照這個步驟來分析。工具
經常使用的查看 CPU 的平均負載的命令有不少,如 uptime,top 等均可以查看。首先解釋下什麼是平均負載,總的來講平均負載能夠理解爲平均一段時間內 runnable 和 non-interruptable 進程的數量。性能
這裏咱們用 uptime 命令執行獲得的結果以下:學習
分別是最近 1 min,5 min,15 min 的平均負載的狀況,從這裏咱們能夠看出最近系統的負載狀況,從而能夠對總體 CPU 的使用狀況有一個大概的判斷。優化
平均負載的詳細介紹能夠看: Understanding the Load Average on Linux and Other Unix-like Systems
通常有以下場景:
可使用以下工具:
查看 %user 能夠判斷是否是 CPU 密集型, %iowait 判斷是不是 I/O 密集型, %wait 判斷的則是大量進程切換型。
本篇主要介紹瞭如何查看 CPU 的使用狀況,和判斷流程,流程爲如下步驟: