在VMware中對SUSE Linux的性能優化手冊

      由於現在VMware向購買Vsphere的客戶免費提供SUSE Linux Enterprise Server(SLES),所以許多公司針對他們的Linux需求都部署了SUSE Linux。

  由於現在VMware向購買Vsphere的客戶免費提供SUSE Linux Enterprise Server(SLES),所以許多公司針對他們的Linux需求都部署了SUSE Linux。然而正如本文所描述的一樣,即使你已經安裝了專門針對VMware環境使用而開發的SUSE內核,你仍然可以通過進一步的性能優化來獲得意想不到的收穫。

  對VMware環境中的SUSE進行性能優化需要兩步:第一步,你必須對VMware環境進行優化。第二步,對虛擬主機的優化完成後,你還可以使用其它技術對虛擬機進行優化。

  評估性能優化

  有很多先進技術可用來評估性能優化的效果。其中一個是Bonnie腳本,它是一套shell腳本,它用不同的方法測試讀寫性能。如果你真想看到性能優化結果的詳細信息,使用Bonnie腳本是一個不錯的主意。但如果你只是想了解虛擬機的基本狀況,你可以使用更簡單的方法讓你一目瞭然。

  你可以在Linux shell環境下使用下面的命令來獲得當前系統性能的基本狀況:

  time dd if=/dev/zero of=/1gfile bs=1M count=1024

  使用此命令,你將可以在指定的位置創建一個1 GB的文件。例如,你可以把它放在根文件系統來測試根文件系統的性能, 或者把它放在一個掛載的SAN分區中來測量SAN設備的性能。這個命令的輸出如下所示:

  root@lassen:/# time dd if=/dev/zero of=/1gfile bs=1M count=1024

  1024+0 records in

  1024+0 records out

  1073741824 bytes (1.1 GB) copied, 8.86777 s, 121 MB/s

  real 0m8.931s user 0m0.000s sys 0m1.890s

  過去,你可以看到內核在處理此命令時真正花費的時間。找到“real 0m8.931s” 這一行,你可以看到你的計算機完成這項任務耗費的時間。這個時間指的是這項任務從開始到結束花費的時間。在此期間,調度器也在其它任務之間進行切換。所以如果你的服務器在多個任務的作用下處於非常繁忙的狀態時,這個參數便不能給出一個非常準確的讀數。但是,如果你的計算機沒有運行任何重要的進程,它便可以給你提供一個不錯的指導。這種情況可以用下面的公式來表示:

  real – sys = overhead(實際-系統=開銷)

  在任何時候系統都會有一些開銷,上面顯示的數字實際上是相當不錯。但是,顯示的這兩個數字也往往有巨大的差異,在VMware中虛擬SUSE Linux時往往就是這樣。舉例來說,寫1GB的文件,實際時間有可能超過一分鐘,但系統的時間卻仍是兩秒鐘!

  優化VMware

  爲發揮SUSE Linux的最大性能而對VMware的優化其實很簡單。默認情況下,VMware爲虛擬磁盤設備安裝的是LSI Logic控制器。這個控制器可以捕獲並模擬所有由虛擬機生成的數據並對它們進行處理,爲了處理這些數據,控制器需要做很多的工作。如果要解決這個問題,您應該將LSI Logic控制器替換爲VMware半虛擬化磁盤設備。由於VMware 半虛擬化磁盤驅動器專門針對在VMware中的SUSE 內核進行過優化,你會發現當採用了這種驅動器,性能將會有巨大的提升。但也不要忘記在虛擬機中安裝VMware工具。所有這些都是爲了在虛擬機中使用最佳的驅動器,以便你可以在VMware這一端獲得最佳的性能。

       硬盤設置爲scsi 且爲independent nopersistent且固定分配大小,不要預分配

       把沒用的nat dhcp全部關掉,直接使用橋連接

      把inputgrb調爲high 在advange裏

      把內存使用設置爲第一個,可以使用主機保留的內存

  優化SUSE

  對於SUSE Linux來說也有一些優化建議。其中第一個就是I/O調度器的行爲設置, 它對於Linux操作系統來說就是如何讓磁盤控制器進行工作。共有四種設置方式:

  CFQ:始終公平排隊。這意味着,控制器使用最佳的平均設置,這在一個讀寫請求或多或少算均衡以及不同進程之間帶寬平均分配的系統中效果非常好。

  Anticipatory:採用這個參數,I/O調度器將試着猜測下一次的讀請求,也就意味着它會預讀一些數據塊。這意味着一部分內存緩衝區會被用來進行讀取優化。這對於讀取密集型環境非常有利,但是處理寫請求就會變得很糟糕。 在最近的一些內核版本中(2.6.33和更高版本),更推薦使用CFQ。

  Deadline:在這個設定中,I/O調度器在將數據從緩衝區真正寫入到磁盤之前會等待儘可能長的時間以確保找到最先需要寫入的請求。使用此設置,調度器會儘可能的對I/O進行實時調度,這種方式是數據庫環境的理想選擇。

  Noop:因爲很多現代的磁盤控制器,RAID控制器或SAN設備都已經對磁盤的讀/寫優化過了,所以不做任何基於Linux層面的I/O優化也很有意義。你至少可以嘗試一下這個選項,以瞭解您的存儲控制器對I/O的優化程度。

  I/O調度器的設置會寫入到系統的一個文件中。 在目錄/sys/block中,你會發現服務器上的每一個存儲設備都對應着一個子目錄,在該目錄下,有文件queue/scheduler。使用cat命令可以查看其當前設置:

  root@lassen:/# cat /sys/block/sda/queue/scheduler

  noop anticipatory deadline [cfq]

  正如你看到的,I/O調度器的當前設置是CFQ。當然如果你找到了其它更好的設置參數,只要執行echo命令將新的參數寫入配置文件即可。

  echo deadline > /sys/block/sda/queue/scheduler

  接下來,你可以測試其它參數對性能的影響。最佳的做法是把所有四個參數都測試一遍並找出最適合你的服務器負載類型的那一個。然後,你就可以將它設爲啓動加載。例如,使用echo命令將配置寫入文件/etc/init.d /boot.local中,這樣就保證了每次重新啓動服務器時這個設置也同時生效。

  優化日誌

  在文件系統中,日誌的設置對於性能優化也很有用。所有當今的Linux文件系統都使用日誌的方式以便在服務器崩潰後使恢復數據更加容易。日誌的基本概念是:在寫一個文件時,日誌將這個事務記錄下來,如果操作失敗,它可以很容易地回滾到寫入前的狀態。但是如果你的服務器是寫密集型應用,默認的日誌設置可能會對寫性能產生負面影響。相反,如果你的服務器是讀密集型應用,你大可不必關心日誌的設置,因爲日誌不關心讀事務。

  在寫負荷很重的服務器上,通過修改文件fstab來掛載文件系統時,你可以使用參數data=journal。使用此參數可以給予文件系統一定程度的保護,但它是輕量級的,這樣可以確保寫入文件時損失儘可能少的時間。下面幾行顯示的內容就類似於文件/etc / fstab中的設置:

  /dev/sdg1 / ext3 user_xattr,data=writeback 1 1

  應用此更改後,重啓服務器讓更改生效。

  在這裏,我們已經討論瞭如何在VMware服務器上優化SUSE Linux Enterprise Server的性能。使用本文所討論的相關參數可以優化存儲通道,從而讓你的虛擬機運行速度更快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章