Şaşırtıcı bir sorunum var. Özelleştirilmiş CDB'leri yürütmek için sg kullanan bir kütüphane var . Rutin bellek tahsisi ile ilgili sorunlar sistemlerinin bir çift vardır sg . Genellikle, sg sürücüsünün sabit limiti yaklaşık 4mb'dir, ancak ~ 2.3mb istekleri olan bu birkaç sistemde görüyoruz. Yani, CDB'ler 2.3mb aktarım için tahsis etmeye hazırlanıyor. Burada herhangi bir sorun olmamalıdır: 2.3 <4.0.
Şimdi, makinenin profili. 64 bit CPU'dur, ancak CentOS 6.0 32 bit'i çalıştırır (bunları oluşturmadım veya bu kararla ilgim yok). Bu CentOS dağıtımının çekirdek sürümü 2.6.32'dir. 16GB RAM'e sahipler.
İşte sistemde gibi bellek kullanımı görünüyor (bu hata otomatik test sırasında meydana çünkü bu errno döndürülür durumunu yansıtır eğer olsa da, henüz doğrulanmadı da budur sg ).
top - 00:54:46 up 5 days, 22:05, 1 user, load average: 0.00, 0.01, 0.21
Tasks: 297 total, 1 running, 296 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 15888480k total, 9460408k used, 6428072k free, 258280k buffers
Swap: 4194296k total, 0k used, 4194296k free, 8497424k cached
Bulduğum bu yazıyı gelen Linux Journal çekirdeğindeki bellek ayrılırken hakkındadır. Makale tarihli ama 2.6 ile ilgili görünüyor (baştaki yazar hakkında bazı yorumlar). Makale, çekirdeğin yaklaşık 1 gb bellekle sınırlı olduğunu belirtiyor (ancak fiziksel ve sanal veya toplam için 1 gb ise metinden tamamen açık olmasa da). Bunun 2.6.32 için doğru bir ifade olup olmadığını merak ediyorum. Sonuçta, bu sistemlerin bu sınıra ulaşıp ulaşmadığını merak ediyorum.
Bu benim problemime gerçekten bir cevap olmasa da, 2.6.32 iddiasının doğruluğunu merak ediyorum. Öyleyse, çekirdek için gerçek bellek sınırı nedir? Sorun giderme için bunun dikkate alınması gerekebilir. Diğer önerilerinizi bekliyoruz. Bunu bu kadar şaşırtıcı yapan şey, bu sistemlerin aynı sorunu göstermeyen diğer birçok sistemle aynı olmasıdır.