Saya mencoba memahami beberapa data yang telah ditarik dari SAR. Saya punya tiga pertanyaan utama tentang ini. Pada akhirnya, saya ingin menentukan berapa banyak CPU yang menganggur pada setiap interval pengambilan sampel di sekelompok server.
- Banyak CPU tidak muncul di setiap entri. Apakah ini yang diharapkan dan Apa artinya sebenarnya? Apakah ini terkait dengan # 2?
- Ada garis yang tidak digunakan (CPU = U). The dokumentasi mengatakan "U menunjukkan seluruh sistem kapasitas yang tidak digunakan". Saya tidak dapat menemukan definisi yang tepat dari "kapasitas Tidak Terpakai di seluruh sistem" atau definisi apa pun, sungguh. Saya tidak yakin bagaimana menafsirkan garis yang mengatakan sesuatu seperti "kapasitas yang tidak digunakan adalah 70% menganggur."
- Terakhir, saya tidak yakin tentang bagaimana garis
-
atauall
dihitung. Saya akan berpikir itu adalah rata-rata dari semua CPU tetapi ketika saya melakukan matematika di semua CPU, saya mendapatkan jawaban yang sangat berbeda dari apa yang ada di baris itu. Adakah yang bisa memberi tahu saya apa yang masuk ke dalam perhitungan itu? Mencermati pertanyaan terkait tentang SAR ini, tampak bahwasystem-wide
persentase idle adalah jumlah produk dari setiap persentase idle CPU dan nilai 'physc'. Sayangnya, saya tidak memilikiphysc
atau entc% (dengan asumsi ada satu) jadi saya tidak bisa memverifikasi ini dengan data saya sendiri. Jika itu benar, apakah itu berarti saya perluphysc
nilai untuk benar-benar memahami persentase menganggur?
Berikut adalah beberapa contoh dari apa yang saya lihat. Ini semua dari hari yang sama.
CPU | Idle CPU | Idle CPU | Idle
---------- ---------- ----------
0 | 8 0 | 15 0 | 17
1 | 25 1 | 94 1 | 32
2 | 79 2 | 100 2 | 97
3 | 62 3 | 99 3 | 71
4 | 5 4 | 13 4 | 5
5 | 7 5 | 13 5 | 23
6 | 6 6 | 99 6 | 71
7 | 7 7 | 44 7 | 98
8 | 11 8 | 12 8 | 48
9 | 17 12 | 0 12 | 38
10 | 33 16 | 12 16 | 37
11 | 64 20 | 3 20 | 42
12 | 6 U | 95 U | 97
13 | 6 - | 15 - | 85
14 | 6
15 | 6
16 | 12
17 | 15
18 | 62
19 | 69
20 | 7
21 | 7
22 | 6
23 | 7
U | 80
- | 15
case 1: avg(24): 22
case 2: avg(12): 42
case 3: avg(12): 48
Data ini dihasilkan oleh skrip yang menjalankan: sar -P ALL 1 1
Ini kemudian menjalankan perintah awk. Saya tidak pandai awk tetapi ini jelas bagian penting:
Saring: /System|AIX|^$|%/ {next}
Parse: {k=0;if(NR==7) k=1} {sub("^-", "all", $1); cpu=$(1+k); user=$(2+k); sys=$(3+k); io=$(4+k); idle=$(5+k)}
Ini tampaknya benar berdasarkan pada apa yang saya sedikit mengerti tentang awk dan apa yang saya lihat dari contoh output.
Jika saya berasumsi bahwa nilai yang hilang semuanya nol untuk kasus 2, rata-rata adalah 21 yang tampaknya agak konsisten dengan kasus 1. Namun, jika saya membuat asumsi untuk kasus 3, saya mendapatkan 24% yang benar-benar bertentangan dengan 85% nilai persen yang diberikan oleh sar untuk keseluruhan CPU idle.
Berikut grafik tangkapan sehari penuh (setiap 30 detik):
Ketika waktu idle 'sistem-lebar' sangat sedikit, korelasi antara idle CPU rata-rata dan idle 'sistem-lebar' hampir sempurna. Tetapi karena waktu idle 'sistem-lebar' meningkat, korelasinya menjadi jauh lebih lemah. Bekerja dengan asumsi bahwa ini adalah mesin deterministik, yang memberitahu saya bahwa data yang saya miliki tidak memberikan gambaran lengkap. Tapi seberapa peduli saya?
Saya tidak sepenuhnya mengerti mengapa beberapa CPU tidak dilaporkan pada setiap titik tetapi yang hilang tidak terdistribusi secara merata seperti terlihat pada contoh di atas. Juga dari membaca ini Redbook , saya bawa bahwa ini harus CPU logis dan bahwa tanpa physc
angka, saya pikir tidak banyak yang bisa saya lakukan dengan nilai-nilai ini. Saya sudah mencoba menggunakan U
nilai dalam berbagai persamaan tetapi saya belum menemukan sesuatu yang masuk akal. Bahkan tidak jelas bagi saya bahwa persentase menganggur keseluruhan dapat diambil pada nilai nominal.
CATATAN : Ada yang salah dengan pengambilan data ini dari sar adalah jawaban yang benar-benar valid untuk # 1, jika itu kasusnya harus selalu kembali.
sar -P ALL
output standar .sar -P ALL 1 1
dan kemudian menggunakan awk untuk keluar nomor cpu dan kemudian pengguna, sistem, IO-tunggu, dan persentase idle. Saya akan menambahkan lebih banyak info ke jawaban Anda.sar -P ALL
secara langsung, bukan output dari skrip ini? Ini adalah skrip non-standar dan tidak ada yang bisa memberi tahu Anda apa yang dilakukannya tanpa melihatnya.Jawaban:
Output yang Anda berikan terlihat berbeda dari standar
sar -P ALL
atausar -u
output. Saya tidak yakin apakah Anda memformatnya dengan tangan, atau jika Anda menjalankannya melalui alat lain, tapi saya pikir ada cukup informasi di sana untuk mencari tahu.Inilah informasi penting, yang diperoleh dari halaman manual untuk
sar
Karena Anda menjalankan dalam sebuah cluster, tampaknya cukup aman untuk menganggap bahwa Anda menggunakan mesin SMP.
Perhatikan bahwa dalam contoh 2 dan 3, hanya 12 dari 24 core yang melaporkan statistik. Jika Anda menganggap bahwa inti ini dinonaktifkan, seperti yang disebutkan di halaman manual, maka statistiknya masuk akal.
Mari perbarui data Anda sebagai berikut, untuk menunjukkan inti yang dinonaktifkan dengan
-
Kemudian kita dapat menggunakan yang berikut ini untuk menghitung rata-rata (ini adalah oneliner cepat yang saya tulis, saya yakin sesuatu yang lebih baik dapat ditulis.)
Perhatikan bahwa jumlah inti dalam contoh 2 dan 3 adalah 12, dan rata-rata cocok dengan apa yang Anda lihat dalam output contoh Anda.
Sepertinya pada beberapa titik antara kasus pertama dan kedua Anda, setengah inti CPU Anda telah dinonaktifkan.
Ringkasan singkat tentang pertanyaan Anda:
U
rata-rata berbeda dariU
pada halaman manual itu. YangU
dimaksud dalam halaman manual harus muncul di bawah kolom ID prosesor.sar
output standar dan tidak ada informasi yang cukup untuk menentukan apa yang mengacu padaU
atauall
pada garis rata-rata. Namun angka pertama tampaknya adalah% idle pada core aktif.sumber
U
danall
berasal dari sar sebagai garis. Saya memecahkannya dalam jawaban saya karena mereka pada dasarnya berbeda dari nilai cpu, dari apa yang saya mengerti.