Solaris 性能基础
??????? 打算寫下這些為本周部門交流做準備,好好理順下自己對簡單系統管理的認識,知識來源主要是是機械工業出版社的 《Solaris 性能與工具》。歡迎指點。?? 這里的測試都在sparc平臺下的solaris9之后的操作系統上,linux上對號入座是行不通的。
??????? 對于服務器而言,我們一般會關注cpu的個數,主頻,負載情況。相關命令prtdiag? psrinfo cpustat mpstat vmstat .
?????? 查看硬件信息,可以用prtdiag,可以看到以下是信息
?????
bash-3.00# prtdiag System Configuration: Sun Microsystems sun4u Sun Fire V100 (UltraSPARC-IIe 500MHz) System clock frequency: 100 MHz Memory size: 768 Megabytes========================= CPUs =========================Run Ecache CPU CPU Brd CPU Module MHz MB Impl. Mask --- --- ------- ----- ------ ------ ----0 0 0 500 0.2 13 1.4========================= IO Cards =========================Bus# Freq Brd Type MHz Slot Name Model --- ---- ---- ---- -------------------------------- ----------------------0 PCI-0 33 0 dma-isadma0 PCI-0 33 0 rtc-m5819 m58190 PCI-0 33 0 power-acpi-power0 PCI-0 33 0 SUNW,lomh0 PCI-0 33 0 serial-su165500 PCI-0 33 0 serial-su165500 PCI-0 33 0 flashprom SUNW,258-78830 PCI-0 33 0 i2c-i2c-smbus0 PCI-0 33 0 ppm-SUNW,smbus-ppm0 PCI-0 33 0 beep-SUNW,smbus-beep0 PCI-0 33 0 fan-control-SUNW,smbus-fan-contr+?
可以看到內存,cpu,以及接口等信息,這是一臺cpu主頻為500m Hz,內存為768m的sparc機器,而那個100mHz是系統總線的頻率,更直白些,就是外頻。
如果要看cpu硬件信息,可以使用prsinfo 這一個命令,-p參數顯示cpu個數,-v顯示內核狀態,-vp 顯示的是線程數
?因為cpu是多核,每個核又有幾個線程,如果要查看核數,請用下面命令:
-bash-3.00$?kstat?cpu_info|grep?core_id|uniq????????core_id?????????????????????????66
????????core_id?????????????????????????68
????????core_id?????????????????????????70
????????core_id?????????????????????????72
????????core_id?????????????????????????74
????????core_id?????????????????????????76
????????core_id?????????????????????????78
????????core_id?????????????????????????80?
?當然,這些不是重點,我們關注的是系統運行時cpu的狀態。
1.vmstat(從命令行粘過來會列對齊錯亂,就截了個圖)
??kthr(應該是kerneral thread)中的三列 r b w ,分別代表運行,阻塞,等待的線程數,可以據此查看cpu飽和度(負載程度)。
?還有一個快速查看飽和度的命令
uptime:
bash-3.00# uptime2:26pm up 384 day(s), 22:04, 2 users, load average: 1.46, 1.47, 1.48 You have new mail in /var/mail/root?
?load average后面的數值代表了cpu在1分鐘,5分鐘,15分鐘的每個運算周期的平均負載(即線程數,),這個平均值對性能評估意義不大。無法檢測出峰值的負載。
sar (system activation report)命令,是一個非常好用的系統信息統計工具。其默認是統計cpu信息的(-u)?
以下是示例
bash-3.00# sar 1 5SunOS xxxx 5.10 Generic_118833-33 sun4u 08/01/201214:47:08 %usr %sys %wio %idle 14:47:09 88 12 0 0 14:47:10 94 6 0 0 14:47:11 76 7 0 17 14:47:12 92 6 0 2 14:47:13 93 7 0 0Average 89 8 0 4一秒統計一次,計五次。關于sar 命令,是可以單獨寫一篇文章的,看操作系統上的man手冊就可見一斑。查看單個cpu利用率的統計命令是mpstat,這里就不貼命令結果了。
? ? ? ? 以上所寫的,是不能直接解決問題的,我們只是看到了cpu的使用狀況,而不是誰在用cpu。誰在用cpu,用了多少,這是進程和線程的事情了,這里需要介紹一個叫做prstat的命令。以下是默認顯示的片段,包含pid,使用內存大小和cpu使用百分比,默認按照cpu使用百分比排序:
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP27235 root 3344K 3016K cpu0 59 0 0:00:00 0.3% prstat/1920 noaccess 163M 58M sleep 59 0 22:49:31 0.3% java/23956 dbadm 115M 42M sleep 59 0 14:13:33 0.2% java/37140 root 3928K 2024K sleep 59 0 0:44:02 0.0% nscd/3126621 sybase 8216K 2664K sleep 59 0 0:00:01 0.0% sshd/127789 root 2320K 1344K sleep 100 - 1:07:05 0.0% xntpd/1PID USERNAME 是進程號,用戶名
SIZE 和RSS是映射虛擬內存大小和占用物理內存
STATE 進程狀態
PRI 優先級 數字越大優先級越高
TIME 累計使用cpu時間
PROCESS/NLWP 進程名(執行文件名)/線程數
?
prstat 可以對進程(線程)進行各種統計排序,
? ? ? ? ? ? ? ? 對線程進行統計,可以使用 -L參數,
? ? ? ? ? ? ? ? 用按指定列排序 使用 -s + 列名 ?例如 prstat -s rss 就是按照使用物理內存量排序
? ? ? ? ? ? ? ?按某uid使用資源總量 -t 針對一個用戶,列出資源 -U + uid?
? ? ? ? ? ? ? ?每一個zone使用的資源統計 -Z
? ? ? ? ? ? ? ?列出用戶和進程的相關信息,相當于 prstat 后跟進了一個prstat -t
以上是對cpu和進程資源的使用情況進行分析的命令,下面寫下磁盤性能相關的的命令iostat,sar。對于磁盤我們一般關注的性能問題是讀寫速度,使用率(繁忙百分比)。使用iostat可以獲得磁盤性能信息,常見參數解釋:
-D 新風格
-e 顯示設備錯誤統計數據
-M 以MB/s為單位顯示吞吐
-n 使用磁盤邏輯名顯示,默認實例名
-p 顯示每個分區和設備的和分區的統計數據
-P 只顯示分區統計信息
-x 擴展磁盤統計數據 ,條目更多。
-z 不顯示全部為0的行
-m 顯示掛載點(配合-p或者-P)
一個例子
bash-3.00#?iostat?-zxnpm????????????????????extended?device?statistics
????r/s????w/s???kr/s???kw/s?wait?actv?wsvc_t?asvc_t??%w??%b?device
????0.0????0.7????0.5????5.6??0.0??0.0????0.7????0.7???0???0?c0t0d0
????0.0????0.0????0.0????0.0??0.0??0.0????0.9????0.7???0???0?c0t0d0s0?(/)
????0.0????0.0????0.0????0.0??0.0??0.0???14.8???15.4???0???0?c0t0d0s1?(/usr/openwin)
????0.0????0.2????0.0????0.4??0.0??0.0????0.1????0.3???0???0?c0t0d0s3?(/var)
????0.0????0.0????0.0????0.0??0.0??0.0????5.0???10.7???0???0?c0t0d0s4
????0.0????0.5????0.5????5.1??0.0??0.0????0.7????0.8???0???0?c0t0d0s5?(/opt)
????0.0????0.0????0.0????0.0??0.0??0.0????3.0????2.0???0???0?c0t0d0s6?(/usr)
????0.0????0.0????0.0????0.0??0.0??0.0????2.2????2.9???0???0?c0t0d0s7?(/export/home)
?kr/s 讀速率 kw/s 寫速率 ?%w 等待百分比 %b 忙百分比 wait 等待的平均數量 actv被響應事物數量 wsvc_t平均等待時間 asvc_t平均運行時間
。更多的內容,可以man。
? ?對于那些進程占用比較多的cpu,內存,都有命令可以找出。對io呢,如何找出正在大量占用磁盤的進程呢?這里有三個個很實用的腳本iotop(
和iosnoop,psio(http://www.brendangregg.com/psio.html) 。 其中iotop和iosnoop只能在s10及以后版本使用,因為使用dtrace了。
?
不是每個用戶都有權限使用dtrace的,如果不是root,又想使用dtrace,請參照
http://www.solarisinternals.com/wiki/index.php/DTrace_Topics_Guide以??以下是增加權限過程:
?
?
As?user1,$?id
uid=1001(user1)?gid=1(other)
$?ppriv?$$
214885:?-sh
flags?=?<none>
????????E:?basic
????????I:?basic
????????P:?basic
????????L:?all
$?exit
As?root,
#?grep?user1?/etc/user_attr?
#?usermod?-K?defaultpriv=basic,dtrace_user,dtrace_proc?user1
#?grep?user1?/etc/user_attr
user1::::type=normal;defaultpriv=basic,dtrace_user,dtrace_proc
#?su?-?user1
$?ppriv?$$
285007:?-sh
flags?=?<none>
????????E:?basic,dtrace_proc,dtrace_user
????????I:?basic,dtrace_proc,dtrace_user
????????P:?basic,dtrace_proc,dtrace_user
????????L:?all
?
?
?
?
?
?
?
?
?
?
?
?
?
?
??????
轉載于:https://www.cnblogs.com/doita/archive/2012/08/03/2617234.html
總結
以上是生活随笔為你收集整理的Solaris 性能基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java学习之日期学习
- 下一篇: android 去锯齿