/ Proc / sys / kernel / thread-max düzenlenemiyor


1

Şu anda bir stres testi aracı yapıyorum ve oldukça fazla sayıda konuya ihtiyacım var. Sınırı yükseltmek için tüm ayarlardan zaten geçtim, ancak son bir ayar var, sistemdeki üst sınır /proc/sys/kernel/threads-max, değişebilir gibi görünmüyorum.

denedim

sysctl -w kernel.threads-max=200000

İle elle düzenleme nano veya echo

echo 200000 > /proc/sys/kernel/threads-max

kurgu /etc/sysctl.conf ve koşma

sysctl -f

Onları gibi çalıştırırsam sudo, Hiçbir hata göstermedim (yeni değer bile gösteriliyor), ancak tekrar kontrol ederken, değer de değişmedi. İle değeri düzenlemeye çalışırken gedit, tükürdü bir

geçersiz argüman"

Ne olursa olsun deneyin, hatta orijinal. Değiştirmekte hiçbir sorun yaşamadım pid_max değer.

Düzenlemelerimi neden reddettiğine dair hiçbir fikrim yok ve benzer bir sorunu olan birini bulamamıştım, bu yüzden birinin ne olduğunu açıklayabilirse çok minnettar olurum.



Bütün sorun, kesinlikle basit ve açık bir yöntemin işe yaramamasıdır ...
Anarkopsykotik

/ Proc / içindeki dosyalar sanaldır ve düzenlenemezler. ( Deneyin lütfen $ du /proc/ bir şey olmadığını bilmek! ) .... "kernel.threads-max = 200000" ayarı başka bir yerde ...
Knud Larsen

Düzenlenebilir, diğer ayarlar için yaptım ve diğer makinelerde de (fedora çalıştıran test sunucuları) ayarlayabilirim.
Anarkopsykotik

Yanıtlar:


3

Cevap yatıyor man proc(5), işte ilginç kısım:

 /proc/sys/kernel/threads-max (since Linux 2.3.11)
                     This file specifies the system-wide limit on the number
                     of threads (tasks) that can be created on the system.

                     Since Linux 4.1, the value that can be written to
                     threads-max is bounded.  The minimum value that can be
                     written is 20.  The maximum value that can be written
                     is given by the constant FUTEX_TID_MASK (0x3fffffff).
                     If a value outside of this range is written to threads-
                     max, the error EINVAL occurs.

                     The value written is checked against the available RAM
                     pages.  If the thread structures would occupy too much
                     (more than 1/8th) of the available RAM pages, threads-
                     max is reduced accordingly.

Çekirdek sürümünüzün & gt; 4.1, bu nedenle 200000 (denediğiniz sayı) 0x3fffffff değerinden düşük olduğundan, sorun mevcut RAM'in yeterli olmadığı gibi görünüyor.


0x3fffffff, 2.000.000.000'den fazla değil mi? Ayrıca, orjinal sayılar veya daha düşükler bile işe yaramadı, gerçekte mevcut ram limitiyle ilgili olabilir.
Anarkopsykotik

200.000, yazıldığı gibi, 0x3fffffff'den çok daha az
pim

Peki google bana ya da heksaya yalan söylemiyor; p Ama yine de, sayının tweaking (şimdiki zaman işe yaramadı, bu yüzden gerçekten kullanılan RAM'e bağlı olmalı) çalıştığını göründüğü için mevcut ram ile ilgili olduğundan eminim. Çok yükseldiğim anda, 96062 (fiziksel ramdan hesaplanmalı) varsayılanına döner.
Anarkopsykotik

Test edilmedi, ancak Wolfram Alpha 0x3fffffff = 1073741823 diyor, yani aşağıdakiler olmalıdır: echo kernel.threads-max = 1073741823 >> /etc/sysctl.conf echo 1073741823 > /proc/sys/kernel/threads-max ( wolframalpha.com/input/?i=0x3fffffff )
James McGuigan
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.