Puncte:0

Creșteți utilizarea memoriei pe serverul NFS

drapel kw

Produc date (fișiere de 100 GB) care sunt în sfârșit copiate pe un server prin NFS v4.2, pe o rețea de 10 GB. Aceste fișiere sunt stocate pe multe HDD-uri, cu formatare XFS (o copie per unitate țintă).

Când se execută sarcinile de copiere:

  • Există o utilizare uriașă a memoriei pe client (ar putea fi mai mult de 64 GB, este nevoie de cât mai multă memorie).
  • Dar aproape niciun ram nu este folosit pe server.

Aș dori să reduc utilizarea memoriei clienților, deoarece aceștia produc în mod continuu date și îi încetinește. Dimpotrivă, serverul este în principal nefolosit.

Bănuiesc că, deoarece HDD-urile sunt încetinite pe server, clientul tamponează cât mai multe date pentru a face copia mai puțin blocată. Nu pot schimba configurația hardware.

Există vreo modalitate de a forța serverul să memoreze mai multe date în cache? Aș prefera să prioritizez utilizarea memoriei serverului decât a memoriei client.

Configurația NFS:

10.0.3.1:/ /mnt/field nfs nfsvers=4.2,noatime,nodiratime,_netdev,noauto,x-systemd.automount,x-systemd.mount-timeout=10 0 0

/etc/exports:

/mnt 10.0.0.0/16(rw,async,fsid=0,no_subtree_check,crossmnt)

Configurare NIC pe server:

MTU 9000
rinbuffer tx 512, rx 1024

Configurație NIC pe client:

MTU 9000
rinbuffer tx 1024, rx 512

Editați | ×: După cum a fost solicitat, /proc/meminfo:

Client server ------ -------------------------

introduceți descrierea imaginii aici

Un monitorix al utilizării memoriei pe acest client:

introduceți descrierea imaginii aici

Utilizarea rețelei:

introduceți descrierea imaginii aici

Notă: Clientul folosește un tmpfs mare (100 GB) pentru a calcula. Cred că acest tmpfs nu este niciodată scăzut din numărul de memorie disponibilă.

Edit 2:

Corelația dintre utilizarea rețelei și a memoriei este mai evidentă pe celălalt client (ar fi trebuit să încep cu asta). Acest client nu folosește niciun tmpfs.

introduceți descrierea imaginii aici

introduceți descrierea imaginii aici

John Mahowald avatar
drapel cn
Vă rugăm să vă editați întrebarea pentru a adăuga `/proc/meminfo` de la gazdele client și server, sub încărcare.
Ealrann avatar
drapel kw
Ok, tocmai l-am adăugat.
Matthew Ife avatar
drapel jo
Puteți furniza și o copie a fișierului `/etc/exports`?
Ealrann avatar
drapel kw
Da, l-am adăugat. L-am pus si aici pentru simplitate: `/mnt 10.0.0.0/16(rw,async,fsid=0,no_subtree_check,crossmnt)`
Puncte:3
drapel jo

Aș dori să reduc utilizarea memoriei de pe clienți, deoarece acestea sunt producând continuu date și le încetinește.

De unde știi asta? Cea mai mare parte a memoriei clientului se află în cache-ul paginii, ceea ce este în întregime normal și chiar și îmbunătățirea tamponării pe server nu va preveni memorarea agresivă în cache a acestei părți a clientului de date.

Ați încercat să spălați memoria cache a paginii (ca test) și să vedeți cum funcționează aplicația dvs. fără utilizarea memoriei cache a paginii?

NFS are ceea ce se numește consistență „aproape de deschis”, ceea ce înseamnă că conținutul datelor și metadatelor este într-adevăr garantat a fi stabil doar atunci când nu aveți fișierul deschis activ (adică, un alt client poate schimba fișierul pe altul sistem și nu ai fi nici unul mai înțelept).

Din cauza acestei limitări de consistență, cache-ul paginii este bazat pe aplicațiile sistemelor client NFS pentru a se asigura că datele sunt disponibile pentru citire în cazul în care acest lucru devine necesar.

Toate acestea fiind spuse, fără să știi ce se întâmplă în tine /etc/exports o metodă de a descărca mai multe date pe server ar putea fi să vă asigurați că montați NFS pe clienții dvs. cu sincronizare montare și pe serverul dvs. exportați căile cu asincron opțiunea de montare.

Acest lucru va avea ca efect asigurarea faptului că scrierile sunt trimise pe server pe partea clientului, în timp ce serverul va răspunde întotdeauna „terminat” înainte de a fi trimise datele pe disc.

Acest lucru va afecta debitul clienților, deoarece veți cauza latență din cauza validării fiecărei cereri din partea clientului, dar serverul va stoca mult mai multe date, deoarece nu va aștepta ca datele să ajungă mai întâi pe disc. De asemenea, probabil că ați dori să vă învârtiți dirty_write_centisecs și alți biți de pe server pentru a-i permite să tamponeze mai multe date în writeback.

Iată totuși problema -- acest lucru este probabil să provoace încetinirea clienților și reducerea integrității serverelor în cazul unui accident. Dacă serverul se blochează, puteți pierde date.

De asemenea, acest lucru nu va afecta utilizarea memoriei pentru cache-ul paginii pe clienții asupra cărora NFS nu are control real.

Una peste alta, sunt sceptic că reducerea utilizării memoriei clienților (dacă este cache-ul paginii pe care o măsurați aici) va îmbunătăți performanța clienților dumneavoastră.

Ealrann avatar
drapel kw
Multumesc pentru raspuns. Știu asta pentru că primul lot este produs mai rapid, dar de îndată ce începe o copie, devine cu ~10% mai lent. Cred că procesul meu este limitat de accesul la memorie; deci cred că folosirea memoriei pentru orice altceva (aici copie de rețea) este motivul încetinirii. Dar nu e mare lucru, încerc doar să optimizez puțin. Deoarece îmi pot permite pierderea de date, voi încerca `async`
Puncte:1
drapel cn

Nu, forțarea utilizării mai puțină a memoriei poate face lucrurile mai încet, nu mai rapide. Cheltuiți deja energie pe 188 GB de DRAM rapidă, ați putea la fel de bine să o folosiți.

Gazda client are 188 GB MemTotal și folosește 162 GB din acesta pentru Cached. De fapt, destul de scăzut în ceea ce privește cerințele de memorie, rețineți 123 GB MemAvailable care poate fi eliberat foarte repede. Majoritatea celor 40 GB ai Shmem sunt probabil tmpfs.

Deoarece Cached + Shmem adună mai mult decât MemTotal, bănuiesc că tmpfs este numărat de două ori, ca memorie partajată și în cache. Ar explica, de asemenea, modul în care Cached minus Shmem este aproximativ MemAvailable, tmpf-urile care nu au stocare persistentă nu pot fi eliberate.

Partea server, 15 GB și schimbare MemTotal, 13 GB în Cache. O mulțime de memorie disponibilă pe această gazdă. Probabil că cea mai mare parte a ceea ce face servește fișiere, nu prea multe solicitări de memorie.

Fără dovezi de supraîncărcare precum activitate vmscan intensă sau epuizarea MemAvailable, nu recomand să luați măsuri.

Ealrann avatar
drapel kw
Mulțumesc, voi verifica activitatea vmscan.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.