
Ubuntu 14.04を実行しているAmazon EC2インスタンスを使用していますが、いくつかの問題が発生しました。
現在実行中のCPU構成に基づいて開くことができるファイルの最大数は何ですか?
これに対する計算はありますか?またはアルゴリズム?
CPU構成(デュアルCPU):
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping : 4
microcode : 0x415
cpu MHz : 2494.046
cache size : 25600 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt fsgsbase smep erms
bogomips : 4988.09
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
明確にするために、これらの制限を設定するのではなく、設定の最大制限を計算する方法を尋ねることです。
答え1
私はあなたが直面する限界は、関連するカーネルデータ構造のためのRAMが不足していることであると確信しています。 CPUアーキテクチャは重要かもしれませんが、データ構造のサイズが異なっているか異なる順序で配置される必要があるため、特定のx86_64 CPUがあるかどうかは重要ではありません。
32ビットプラットフォームでは、2 31 -1(MAXINTなど)に制限することができますが、最初にRAMが不足する可能性があります。 1つのファイル記述子が2バイト以上のRAMを占有します。 (もちろん、あなたは64ビットプラットフォームを使用しています。2 63 -1は開こうとしているファイルの数です。これはとんでもないことです)
私はこの数を計算する方法がわからないことを認めます。これは間違いなくファイル記述子の種類によって異なります。 TCPソケットの場合、ローカルファイル(ファイルシステムによって異なる場合があります)、パイプなどを開く場合、カーネルメモリの使用量は間違いなく異なります。
正直に言うと、一時的なEC2インスタンス(同じマシンタイプを使用)を起動し、制限を途方もなく高い値に設定してからテストすることをお勧めします。