AIX'teki sar'dan elde edilen çıktıyı anlama


11

SAR'dan alınan bazı verileri anlamaya çalışıyorum. Bununla ilgili üç ana sorum var. Sonuçta, bir sunucu kümesinde her örnekleme aralığında kaç CPU'nun boşta olduğunu belirlemek istiyorum.

  1. CPU'ların çoğu her girişte görünmüyor. Bu bekleniyor mu ve bu tam olarak ne anlama geliyor? # 2 ile ilgili mi?
  2. Kullanılmayan hatlar var (CPU = U). Dokümantasyon "U sistem çapında Kullanılmayan kapasite gösterir" diyor. "Sistem çapında Kullanılmayan kapasite" nin kesin bir tanımını veya hiçbir tanımlamayı gerçekten bulamıyorum. "Kullanılmayan kapasite% 70 boştaydı" gibi bir şeyi nasıl yorumlayacağından emin değilim.
  3. Son olarak, -veya allsatırının nasıl hesaplandığından emin değilim . Tüm CPU'ların ortalaması olduğunu düşünürdüm, ancak tüm CPU'larda matematiği yaptığımda, o satırdakinden çok farklı bir cevap alıyorum. Birisi bana tam olarak bu hesaplamanın ne olduğunu söyleyebilir mi? SAR ile ilgili bu soruya yakından bakıldığında , system-wideatıl yüzde, her CPU'nun atıl yüzde ve 'physc' değerinin ürününün toplamıdır. Ne yazık ki, physc(veya varsayarsak) veya entc% yok bu yüzden kendi verilerimle bunu doğrulayamıyorum. Bu doğruysa, physcboştaki yüzdeyi gerçekten anlamak için değerlere ihtiyacım var mı?

İşte gördüğüm bazı örnekler. Bunların hepsi aynı günden.

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

Bu veriler çalışan bir komut dosyası tarafından üretilir: sar -P ALL 1 1Daha sonra bir awk komutu çalıştırır. Awk ile iyi değilim ama bunlar açıkça önemli kısımlar:

Filtre: /System|AIX|^$|%/ {next}

ayrıştırma: {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)}

Bu awk ne az anlamak ve çıktı örnekleri ne gördüm dayalı doğru görünüyor.

Durum 2 için eksik değerlerin tamamen sıfır olduğunu varsayarsam, ortalama 21'dir. Bu durum durum 1 ile bir şekilde tutarlıdır. Toplam CPU boşta için sar tarafından verilen yüzde değeri.

İşte tam günlük çekimlerin bir grafiği (her 30 saniyede bir):

resim açıklamasını buraya girin

Çok az 'sistem çapında' boşta kalma süresi olduğunda, ortalama CPU boşta ve 'sistem çapında' boşta arasındaki ilişki neredeyse mükemmeldir. Ancak 'sistem çapında' boşta kalma süresi arttıkça korelasyon zayıflar. Bunların deterministik makineler olduğu varsayımı üzerine çalışarak bana sahip olduğum verilerin tam resmi vermediğini söylüyor. Ama ne kadar umurumda?

Neden bazı işlemcilerin her noktada rapor edilmediğini tam olarak anlamıyorum ama eksik olanlar yukarıdaki örneklerde görüldüğü gibi eşit olarak dağılmamıştır. Ayrıca bu kırmızı kitabı okurken , bunların mantıksal CPU'lar olması gerektiğini ve physcsayılar olmadan, bu değerlerle yapabileceğim pek bir şey olmadığını düşünüyorum. UDeğeri çeşitli denklemlerde kullanmaya çalıştım ama mantıklı bir şey bulamadım. Toplam atıl yüzdenin nominal değerden alınabileceği bile net değil.

NOT : Bu verinin sar'dan yakalanmasıyla ilgili bir sorun var # 1 için tamamen geçerli bir cevaptır, eğer durum her zaman geri dönmelidir.


Bu çıktıyı elde etmek için hangi komutu kullanıyorsunuz? Standart sar -P ALLçıktıya benzemiyor .
İsviçre

@Swiss Bu, yazmadığım bir senaryodan geliyor. sar -P ALL 1 1İşlemci çağırır ve daha sonra cpu numarasını ve ardından kullanıcı, sistem, IO-wait ve boşta kalan yüzdeleri ayırmak için awk kullanır. Cevabınıza daha fazla bilgi ekleyeceğim.
JimmyJames

@Swiss Örneği, betiğin çıktısının neye benzediğini daha iyi yansıtacak şekilde düzenledim.
JimmyJames

sar -P ALLbu betiğin çıktısını değil , doğrudan çıktısını verebilir misiniz ? Standart olmayan bir komut dosyasıdır ve kimse görmeden ne yaptığını size söyleyemez.
İsviçre

@ Maalesef yapamam. Senaryoyu görebiliyorum ve çıktısı. Açıklayabildiğim şeyin açıklamasında eksik olan bir şey var mı?
JimmyJames

Yanıtlar:


4

Verdiğiniz çıktı standart sar -P ALLveya sar -uçıktıdan farklı görünüyor . Elle biçimlendirdiğinizden veya başka bir araçla çalıştırdığınızdan emin değilim, ancak bunu anlamaya yetecek kadar bilgi olduğunu düşünüyorum.

İşte man sayfasından elde edilen önemli bilgiler sar

Not: SMP makinelerinde hiç etkinliği olmayan bir işlemci (her alan için 0,00) devre dışı bırakılmış (çevrimdışı) bir işlemcidir.

Bir kümede çalıştığınız için, SMP makineleri kullandığınızı varsaymak oldukça güvenli görünüyor.

Örnek 2 ve 3'te, 24 çekirdeğin sadece 12'sinin istatistik bildirdiğini unutmayın. Bu çekirdeklerin man sayfasında belirtildiği gibi devre dışı bırakıldığını varsayarsanız, istatistikler mantıklıdır.

Engelli bir çekirdeği belirtmek için verilerinizi aşağıdaki gibi güncelleyelim -

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      9   | -       9   | -
10  | 33      10  | -       10  | -
11  | 64      11  | -       11  | -
12  | 6       12  | 0       12  | 38
13  | 6       13  | -       13  | -
14  | 6       14  | -       14  | -
15  | 6       15  | -       15  | -
16  | 12      16  | 12      16  | 37
17  | 15      17  | -       17  | -
18  | 62      18  | -       18  | -
19  | 69      19  | -       19  | -
20  | 7       20  | 3       20  | 42
21  | 7       21  | -       21  | -
22  | 6       22  | -       22  | -
23  | 7       23  | -       23  | -

Sonra ortalamaları hesaplamak için aşağıdakileri kullanabiliriz (bu yazdığım hızlı bir oneliner, eminim daha iyi bir şey yazılabilir.)

$ awk '{idle = $3; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 22.208333  Cores: 24
$ awk '{idle = $6; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 42.000000  Cores: 12
$ awk '{idle = $9; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 48.250000  Cores: 12

Örnek 2 ve 3'teki çekirdek sayısının 12 olduğunu ve ortalamaların örnek çıktısında gördüğünüzle eşleştiğini unutmayın.

Birinci ve ikinci durumunuz arasındaki bir noktada, CPU çekirdeklerinizin yarısı devre dışı bırakılmış gibi görünüyor.

Sorularınızla ilgili kısa bir özet:

  1. Eksik veriler muhtemelen işlemci çekirdeğinin devre dışı bırakıldığı anlamına gelir.
  2. UOrtalama doğrultusunda farklı olduğunu Uo adam sayfasında. Uİşlemci Kimliği sütununda altında görebilirsiniz kılavuz sayfasında anılacaktır.
  3. Sağladığınız çıktı standart sarçıktıdan farklı ve ortalama satırdaki Uveya allortalama satırın ne anlama geldiğini belirlemek için yeterli bilgi yok. İlk sayı, aktif çekirdeklerde% rölanti gibi görünüyor.

"Örnek 2 ve 3'teki çekirdek sayısının 12 olduğunu ve ortalamaların örnek çıktısında gördüklerinizle eşleştiğini unutmayın." Üzgünüm, net olmayabilirim, rakamlardan ortalamayı hesapladım. Bu sar'dan gelmiyor. UVe alldeğerler hatları gibi sar geliyor. Onları cevabımda kırdım çünkü cpu değerlerinden, anladığımdan temelde farklı şeyler.
JimmyJames

Çekirdekler devre dışı bırakılırsa, 'sistem çapında' boşta kalma süresi neden 2. durumda, 3. durumda olduğundan daha azdır? Aynı 12 cpus boyunca neredeyse aynı ortalama boşta kalma süresine nasıl sahip olabileceklerini anlamak için uğraşıyorum ve yine de sistem genelinde boşta kalma süresi tamamen farklı.
JimmyJames

Makineler sabit yük altındayken her işlemciden çıktı görüyorum. Bu bana, bunların devre dışı bırakıldığını doğru bulduğunuzu gösterir. Ben sadece sistemin geniş boşluğunun engelli olmayan cpus'un boşluğu ile nasıl ilişkili olduğu konusunda mücadele ediyorum.
JimmyJames

Soruyu açıklığa kavuşturmak için birkaç değişiklikle güncelledim. Dolayısıyla, durum 2'ye bakıldığında, 12 cpus devre dışı bırakılmışsa ve sistem-boşta kalma yüzdesi 24'ün tamamına dayandıysa,% atıl% 50'nin altına inemez. Yani% 15 sahip olduğum göz önüne alındığında, sys boşta% devre dışı CPU'ları görmezden geliyor demektir, değil mi?
JimmyJames
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.