Ram sınırlandırmak / ram problemleri

Sistemim:
Distro: RebornOS Arch-Based
Kernel: Liquorix
RAM: 8 GB
Disk: 220 GB SSD
GPU: AMD Radeon RX550
CPU: Intel(R) Core™ i5-2400 (4) @ 3,10 GHz

League of Legends indiriyordum lutris ve wine aracılığıyla, fakat indirme işlemi esnasında sistemim Ramimin tamamını kullandı. Ve bunun neticesinde bilgisayarım dondu, 3-4 dakika bekleyip durumun düzelmediğini görerek bilgisayarı güç tuşundan kapattım. Sorun, RAM’in tamamının kullanılmasından kaynaklıydı çünkü bunun ile ilgili bir hata mesajı bile gelmişti ekranıma.

Ramimin bu kadar gereksiz neden harcandığını bilmiyorum, Mate masaüstü ortamında, bir oyun indirmesi yaparken, sadece arkada bir kaç pencere, firefox’ta 5 sekme açık iken 8 gb ram harcaması pek bana doğru gelmiyor ama gene.

Yani bu durum ile ilgili napabiliriz? Ram kullanımımı mı sınırlandırmalıyım? Bir sistem ayarlaması yaparak ram’in bu denle çalışmasını mı engellemeliyim? Teşekkürler, iyi forumlar

CPU ve RAM kullanımını sınırlandırmak muhtemelen çözüm olacaktır. Ben, minecraft sunucusu açtığım bilgisayarda sunucunun bütün işlemciyi tüketmesi nedeniyle çökme / internet problemleri yaşıyordum.

RAM’i doğrudan java ayarlarından sınırlamak mümkün. Bunun haricinde systemd-run ile de sınırlandırabilirsin:

systemd-run --scope -p MemoryMax=500M --user /bin/program

systemd ile pek çok kaynağın kullanımını kontrol edebilirsin. Daha faza bilgi için man systemd.resource-control

Ancak systemd biraz karmaşık, CPU kontrolünü systemd ile yapmaktansa cpuseti tercih edebilirsin.

systemd-run, kaynak kontrolünde daha detaylı bir yönetim sunuyor. CPU’nun kaç döngüsünün, RAM’in kaç MiB’sinin kullanılabileceğini hassas bir şekilde ayarlayabiliyorsun. Öte yandan cpuset, sadece işlemci çekirdeklerin ya da RAM kanallarının sınırlandırılmasını sağlıyor.

systemd-run sisteme takılı toplam RAM’in ne kadarının kullanılabileceğini ayarlarken cpuset 1. RAM’i şu uygulamaya 2. RAM’i bu uygulamalara sınırla diyor.

Lutrisi sınırlandırılmış bir şekilde başlatmak için:

# bu örnekte lutrisi cpu'nun 0, 1 ve 2. çekirdekleriyle sınırladım
sudo cset set --set=lutris --cpu=0-2 # lutris için işlemci grubu oluşturur. işlemci grubu oluştururken root olmak lazım
sudo cset proc --set lutris --exec su -- -c lutris kullanıcı-adınız
# ya da systemd run ile birleştirin:
sudo cset proc --set lutris --exec su -- -c 'systemd-run --scope -p MemoryMax=500M --user /bin/program' kullanıcı-adınız

cset’in kötü yanı, kullanırken root olmak lazım.

Örnek: Suncumdaki cpuset ile ayarladığım cpu kullanımları

cset shield --cpu 2-7 --sysset sys --userset usr
cset set --cpu 3-7 usr/mc
cset set --cpu 2 usr/node

# node
cd /var/www/icraat/api
screen -S icraat-api -dm cset proc --set usr/node --exec -- node . --icraat
cd /var/www/zamankaybi/api
screen -S zamankayi-api -dm cset proc --set usr/node --exec -- node . --zamankaybi

# mc
cd /var/mc
screen -S mc -dm cset proc --set usr/mc --exec ./start.sh

Daha fazla bilgi için: man cset, man cset-set, man cset-proc

1 Like

Gönderiniz çözüm olmak için yeterli. Teşekkürler

systemd-run --scope -p MemoryMax=500M --user /bin/program

komutunu kullandığımda, MemoryMax parametresinin karşısına istediğim değeri yazdığımda otomatik olarak ram kullanım sınırlandırmasını yapmış olucak mı?

CPU Kullanımını sınırlama konusunda biraz kafam karıştı, anlayamadım. 4 çekirdeğe sahibim, bu kullanımı governor ayarları ile yapabildiğimizi düşünüyordum. Yazdığınız komutlara baktığımda linuxa yeni başladığım için kafam karıştı, yanlış bir şey yapmaktan korktum.

Yardımcı olursanız çok teşekkür ederim

1 Like

MemoryMax’ın karşısına maksimum değeri yazmanız yeterli. CPU sınırlandırmak için daha kolay bir yöntem varmış, systemd’nin klavuzuna bir göz gezdirdim:

systemd-run --scope -p MemoryMax=1G -p CPUQuota=200% --user lutris

MemoryMax’ın karşısına megabayt (M) ya da gigabayt (G) cinsinden gereken değeri yazmanız, RAM sınırlandırması için yeterli.
CPUQuota’nın da karşısına çekirdeklerin toplam kullanımını yazın. 4 çekirdekten bahsetmiştiniz, 400% bütün işlemciyi kullanmanızı sağlar. 200% işlemcinin yarısı, 150% işlemcideki bir buçuk çekirdeği vs. Dikkat: Yüzde işareti Türkçedekinin aksine sayının önünde değil de sonunda olmalı.

4 Likes

Çok teşekkür ederim, problemi çözdüm. Güzel konu oldu.

2 Likes