天天看點

linux性能調優

1-1.0  關于ulimit

  linux對每個使用者,系統限制其最大程序數.為提高性能,可根據裝置資源情況,設定各linux使用者最大程序數.

  [Qrui@root ~]#ulimit -a 用來顯示目前各種使用者程序限制

1-1.1  編輯/etc/security/limits.conf解除系統的最大程序數及最大檔案打開數限制.

添加如下語句

* soft noproc 11000

* hard noproc 11000

* soft nofile 4100

* hard nofile 4100

1-1.2  ulimit 指令用法

-H 設定硬體資源限制

-S 設定軟體資源限制

-a 檢視目前所有的資源限制

-c size 設定core檔案的最大值,機關

-d 資料段

-f 建立檔案的最大值

-l 設定記憶體中鎖定程序

-m 設定可以使用的常駐記憶體最大值

-n 設定同時可以的最大檔案描述符

-p 設定管道緩沖區

-s 設定堆棧

-t 設定cpu使用時間最大上限

-v 設定虛拟記憶體

1-1.3程序,線程,會話差別.

程序是程式執行時的一個執行個體,從核心的觀點看,程序的目的就是擔當系統資源配置設定(cpu,記憶體)

線程是程序的一個執行流,是cpu分派和排程的基本單元,是比程序更小的能獨立運作 的最小單元,

程序-資源配置設定的最小單元,線程-程式執行的最小機關,

1、程序與線程

程序是程式執行時的一個執行個體,即它是程式已經執行到課中程度的資料結構的彙集。從核心的觀點看,程序的目的就是擔當配置設定系統資源(CPU時間、記憶體等)的基本機關。

線程是程序的一個執行流,是CPU排程和分派的基本機關,它是比程序更小的能獨立運作的基本機關。一個程序由幾個線程組成(擁有很多相對獨立的執行流的使用者程式共享應用程式的大部分資料結構),線程與同屬一個程序的其他的線程共享程序所擁有的全部資源。

"程序——資源配置設定的最小機關,線程——程式執行的最小機關"

程序有獨立的位址空間,一個程序崩潰後,在保護模式下不會對其它程序産生影響,而線程隻是一個程序中的不同執行路 徑。線程有自己的堆棧和局部變量,但線程沒有單獨的位址空間,一個線程死掉就等于整個程序死掉,是以多程序的程式要比多線程的程式健壯,但在程序切換時, 耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,隻能用線程,不能用程序。

使用多線程的理由之一是和程序相比,它是一種非常"節儉"的多任務操作方式。我們知道,在Linux系統下,啟動一個新的程序必須配置設定給它獨立的位址空間,建立衆多的資料表來維護它的代碼段、堆棧段和資料段,這是一種"昂貴"的多任務工作方式。而運作于一個程序中的多個線程,它們彼此之間使用相同的位址空間,共享大部分資料,啟動一個線程所花費的空間遠遠小于啟動一個程序所花費的空間,而且,線程間彼此切換所需的時間也遠遠小于程序間切換所需要的時間。據統計,總的說來,一個程序的開銷大約是一個線程開銷的30倍左右,當然,在具體的系統上,這個資料可能會有較大的差別。

使用多線程的理由之二是線程間友善的通信機制。 對不同程序來說,它們具有獨立的資料空間,要進行資料的傳遞隻能通過通信的方式進行,這種方式不僅費時,而且很不友善。線程則不然,由于同一程序下的線程 之間共享資料空間,是以一個線程的資料可以直接為其它線程所用,這不僅快捷,而且友善。當然,資料的共享也帶來其他一些問題,有的變量不能同時被兩個線程 所修改,有的子程式中聲明為static的資料更有可能給多線程程式帶來災難性的打擊,這些正是編寫多線程程式時最需要注意的地方。

除了以上所說的優點外,不和程序比較,多線程程式作為一種多任務、并發的工作方式,當然有以下的優點:

提高應用程式響應。這對圖形界面的程式尤其有意義,當一個操作耗時很長時,整個系統都會等待這個操作,此時程式不會響應鍵盤、滑鼠、菜單的操作,而使用多線程技術,将耗時長的操作(time consuming)置于一個新的線程,可以避免這種尴尬的情況。

使多CPU系統更加有效。作業系統會保證當線程數不大于CPU數目時,不同的線程運作于不同的CPU上。

改善程式結構。一個既長又複雜的程序可以考慮分為多個線程,成為幾個獨立或半獨立的運作部分,這樣的程式會利于了解和修改。

1-1.4sysctl核心級調優

下一篇: 解壓縮

繼續閱讀