Soru iotop% 99.99 ile kswapd0 gösterir% 0 DISK OKUMA ve DİSK YAZMA


Ağır bir postgres sorgum var. Çalıştırmak için on dakika sürüyor. Daha hızlı çalışmasını sağlamak için donanımımı yükseltmek istiyorum. Daha fazla RAM'in yardımcı olacağını düşünüyorum, ancak anakartım dolu olduğundan yepyeni bir anakarta ihtiyacım olacak. Daha iyi sonuçlar alacağımı bilmedikçe yatırım yapmak istemiyorum. İşte iotop'ta gördüğüm şey:

Toplam DİSK OKUMU: 46.81 M / s | Toplam DİSK YAZI: 0.00 B / s
  TID PRIO KULLANICI DİSKİ OKUYUN DİSK YAZMA SWAPIN IO> COMMAND
   27 be / 4 kökü 0.00 B / s 0.00 B / s% 0.00% 99.99 [kswapd0]
 2514 be / 4 postgres 46.81 M / s 2.45 M / s% 0.00 18.36% postgres: postgres db1 127.0.0.1 (55328) SELECT
    1/4 kökü 0.00 B / s 0.00 B / s% 0.00% 0.00 init
    2 be / 4 kökü 0.00 B / s 0.00 B / s% 0.00% 0.00 [kthreadd]
    3 be / 4 kökü 0.00 B / s 0.00 B / s% 0,00% 0,00% [ksoftirqd / 0]
    4 be / 4 kökü 0.00 B / s 0.00 B / s% 0.00% 0.00 [kworker / 0: 0]
    5 be / 4 kökü 0.00 B / s 0.00 B / s% 0,00% 0,00% [kworker / u: 0]
    6 rt / 4 kök 0.00 B / s 0.00 B / s% 0.00% 0.00 [geçiş / 0]
    7 rt / 4 kök 0,00 B / s 0,00 B / s% 0,00% 0,00% [watchdog / 0]
    8 rt / 4 kök 0.00 B / s 0.00 B / s% 0.00% 0.00 [geçiş / 1]
    9 be / 4 kökü 0.00 B / s 0.00 B / s% 0.00% 0.00 [kworker / 1: 0]
   10 be / 4 kök 0.00 B / s 0.00 B / s% 0.00% 0.00 [ksoftirqd / 1]

Kswapd0'un en çok sabit disk sürücüsüne (% 99,99 IO) çarptığına dikkat edin. Bununla birlikte, DISK OKUMA ve DİSK YAZMA ve kswap0'ın SWAPIN'i sıfırdır. Kswap0 ne yapıyor? Sabit diskime gerçekten mi çarpıyor? Bu sisteme daha fazla RAM eklemek hiç yardımcı olur mu?


7
2018-06-27 18:54


Menşei




Cevaplar:


Buna yanlış açıdan yaklaşıyorsunuz. Sadece SQL'inizi optimize ettikten sonra, problemi daha fazla RAM / CPU / Disk (G / Ç bant genişliği) atmayı düşünün ve sorunu tanımladığınız gibi ele almalısınız.

Önce Postgres'e EXPLAIN (veya EXPLAIN ANALYZE) sorguyu nasıl yapıyor?
Her zaman sevgili yavruları bunun için optimize edin ve daha sonra performans problemleriniz varsa, darboğazın nerede olduğunu belirlemek için daha fazla araştırın.sonassi ek olarak bakmanız gereken şeyler hakkında bazı iyi önerilerde bulundu iotop).

Web yığınınızı ve DB'nizi aynı sunucuda çalıştırıyorsanız, şimdi onları da bölmek için iyi bir zaman.


2
2018-06-27 19:49





IO-sub sisteminizle ilgili hiçbir sorun olmadığından% 110 emin misiniz - örneğin tüm sabit sürücüler iyi [akıllı / baskın kendini test], geri yazma önbelleği etkinleştirilmiş [eğer raid kartında pil destekli önbellek varsa]?

IO 48MB / s okuma aktarımı ile doyuruyor postgres değil mi?


0
2018-06-27 19:02





kswapd, linux üzerindeki sanal bellekle uğraşmak için gereken işin bir kısmını yapıyor. Bu yüzden,% 100'lük bir orana sahip olmak, çok fazla iş yaptığını düşündürmektedir, ancak bu, sadece PG işleminiz tarafından alınan kaynaklardan açılmasından da kaynaklanabilir (ör., Arabelleklerin IO için bırakılmış bir RAM'in olmaması).

Her zamanki araçlarla ne kadar ram kullanıldığını / kullanılmadığını kontrol ederdim.

Kswapd0 için IO sütununun yanı sıra istatistiklerin eksikliğiyle ilgili olarak, aşağıdaki açıklamanın doğru olduğundan emin değilim, ancak çekirdek çekirdeği / swapoutunu çekirdek alanında (kswapd'ın yaşadığı yer) izleyemez, çünkü Linux sadece Çekirdek uzayda ayrılan sayfalar için bir şey takas.


0
2018-06-27 19:05





Teşhis için başka önemli bilgi parçalarından bahsetmediniz.

free -m
cat /proc/meminfo
top -b

Muhtemelen I / O’nun kswapd sadece sahte olarak bildiriliyor postgres. Süreçlerden biri muhtemelen D Durum, ancak yukarıdaki komutlardan gelen tüm veriler doğrulanır. Her ne kadar meraklı olsa da swapin boş.


0
2018-06-27 19:08