ZFS - Wieviel RAM holt sich ARC?

Errorsmith

Kompiliertier
Hi

Ich hab gestern in meinem Homeserver weitere 16GB Speicher eingebaut, insgesamt hat das Teil nun 32GB.
Heute habe ich dann mal nachgesehen was er so mit dem Speicher treibt und mit 'top' das da gefunden:
Code:
last pid: 93693;  load averages:  0.79,  0.64,  0.46                            
146 processes: 1 running, 143 sleeping, 2 zombie
CPU:  2.1% user,  0.0% nice,  0.4% system,  0.0% interrupt, 97.5% idle
Mem: 162M Active, 573M Inact, 24G Wired, 28M Cache, 6337M Free
ARC: 23G Total, 9909M MFU, 13G MRU, 875K Anon, 115M Header, 331M Other
Demnach hat sich ARC 23GB vom Speicher gekrallt? Nach 24h ist der RAM schon fast voll!?

Rest von der Kiste:
FreeBSD 10,
3 ZPools: zroot (20GB auf SSD), opstorage (3x1TB zraid1), data (5x3TB zraid2)
4 Netzwerkkarten (Onboard GBit, Intel GBit. Dualport Broadcom)
Intel i3 / 2 Kerne + HT)
Auf dem Server laufen diverse jail / Dienste fürs Heimnetzwerk: samba, nfs, openldap, 2 webserver, ein serviio (upnp server). Alles gern genutzt aber (userzahl) kaum beansprucht.

Meine Speicherkapazität mit ZFS liegt bei insgesamt ca 10TB netto / 18TB brutto - Reicht der RAM oder sind 32GB schon eher knapp?

Daher so als Frage: Nach eurer Erfahrung, wieviel RAM holt sich ARC und was tut ARC wenn ich nun Speicher anfordere (z.B. weil ich eine jail mit AMP hochfahre die hypothetisch 4GB verbrauchen kann). Funktioniert das Freigeben von Speicher oder fängt er dann an wie doof im Swap rumzurödeln?

Um der Diskussion âla "Warum soviel Platz" vorzubeugen:
Der Platz wird genutzt für
- TV aufnahmen
- virtuelle Maschinen (virtualbox, alle images liegen auf dem Server)
- Betriebssysteme (alle Client/Desktop Systeme bei mir sind "diskless" und laden ihr OS vom Server)


Grüße,
errorsmith
 
Der ZFS ARC holt sich generell alles an Speicher, was irgendwie bekommen kann. Seit etwa FreeBSD 9.0 funktioniert allerdings der Back-Pressure Mechanismus gut. Sobald jemand anders größere Mengen Speicher verbraucht, wird der ARC ihn wieder freigeben. Der Mechanismus ist allerdings prinzipbedingt etwas träge, wenn also eine sehr große Speicheranforderung (wie eine startende VM) kommt, wird das System dadurch vorübergehend in die Swap getrieben. Mein Tipp ist daher, dass man den ARC generell auf maximal Zweidrittel des RAM begrenzen sollte, außer es handelt sich wirklich um einen reinen Fileserver. Auf meinen Desktops bin ich sogar noch radikaler und begrenze den ARC generell auf 4GB. Das ist wirklich mehr als genug an Caches, da man letztendlich eh nur auf den immer gleichen Daten (Browsercaches, Quellcodes, etc.) wirklich arbeitet. Und wenn nicht, muss er halt von den Platten lesen und es dauert ein paar Millisekunden länger. Davon geht die Welt auch nicht unter.
 
Danke!
Ich starte nicht regelmäßig VMs, das war nur ein Beispiel :-)
Der Server läuft fast ausschließlich als Fileserver, den openldap und dhcp kann man (imho) vernachlässigen.
Ich denke allerdings darüber nach das "diskless" Thema noch etwas weiter zu treiben und irgendeine Terminallösung zu implementieren. Ich habe hier ein paar Thin Clients rumliegen (HP & Fujitsu) die ich dazu nutzen möchte. Ich weiß aber noch nicht wie ich das dazu notwendige X in eine Jail quetschen kann, ebenso läuft wohl Virtualbox nicht in einer jail. Da ich aber bei FreeBSD bleiben möchte und auch nicht einfach einen ESX drunter drücken kann (wohin so lang mit den Daten?), weiß ich noch nicht wie ich das umsetzen kann.

Grüße,
errorsmith
 
Zurück
Oben