Πιστεύω πως υπάρχει αρκετή “ομίχλη” γύρω από τη συγκεκριμένη ρύθμιση και κατά πόσο προτείνεται ή αν τελικά θα φανεί κάποια διαφορά στο perforrmance των windows.

Ας δούμε όμως πως λειτουργεί ο Windows Memory Manager και τι ακριβώς επιρροή έχει η συγκεκριμένη ρύθμιση. Τα παρακάτω ισχύουν σε 32bit λειτουργικά και όπου υποστηρίζεται το 3gb.

Στην εκκίνηση των Windows o Memory Manager δημιουργεί ένα Virtual Memory Space με μέγεθος 4GB. Virtual σημαίνει πως πρόκειται για μια περιοχή μνήμης η οποία μπορεί να βρίσκεται στην RAM ή στο pagefile, οι εφαρμογές πάντα όμως πάντα βλέπουν 4GB χωρίς να γνωρίζουν άμεσα που βρίσκεται αυτή.

Ο Memory Manager χωρίζει την περιοχή μνήμης σε 2 περιοχές των 2GB όπως φαίνεται παρακάτω:

3gb

Οι 2 περιοχές που φαίνονται εξυπηρετούν διαφορετικούς σκοπούς. Στο User ή Application Space εκτελούνται όλες οι εφαρμογές και πολλές πλατφόρμες όπως SQL, Exchange Server, Active Directory, DNS κλπ. Σημειωτέον το executable του AD δεν είναι άλλο από το γνωστό LSASS (Local Security Authority Subsystem Service), το οποίο υπάρχει σε όλες τι τελευταίες εκδόσεις των Windows και όταν κάποιος Server αναλαμβάνει ρόλο Domain Controller το LSASS εκτελεί χρέη Kerberos authentication, AD Replication κλπ.

Στην ουσία μέχρι εδώ όλες οι εφαρμογές βλέπουν μια περιοχή 4GB αλλά ο Memory Manager ποτέ δεν τις αφήνει να χρησιμοποιήσουν πάνω από 2GB που είναι το όριο της περιοχής.

Στην περιοχή Kernel φορτώνονται drivers, ο πυρήνας του λειτουργικού (kernel) και άλλα απαραίτητα στοιχεία του λειτουργικού όπως τα Page Table Entries. Ο διαθέσιμος αριθμός των PTEs είναι ιδιαίτερα κρίσιμος για το λειτουργικό και  αυτό που κάνουν είναι να αντιστοιχίζουν τα Pages στη Virtual Memory με τα Memory Pages που βρίσκονται στη φυσική μνήμη RAM.

3gb_PTEsΜπορούμε παρακολουθήσουμε τον αριθμό των PTEs από το Performance Monitor μέσω του counter “Memory –>Free System Page Table Entries” . Σε περίπτωση που ο διαθέσιμος αριθμός πέσει κάτω από 10.000 η σταθερότητα του συστήματος είναι οριακή και βρισκόμαστε κοντά σε blue screen. Συνήθως όταν μειώνεται σημαντικά ο αριθμός τους οφείλεται σε κάποιο memory leak.

** Προσοχή στο Performance tool does not accurately show the available Free PTEs όπου στα 2003 πριν το SP1 το Performance Monitor δεν καταμετρούσε σωστά τα PTEs.

Προσθέτοντας το /3gb στο boot.ini η κατανομή της μνήμης γίνεται ως εξής:

3gb_2

Το σύστημα διαθέτει πλέον 3GB User και 1Gb Kernel Space. Λόγω της μείωσης του Kernel Space τα ελεύθερα PTEs μειώνονται στο μισό οπότε απαιτείται επιπλέον παρακολούθηση για την ευστάθεια του λειτουργικού.

Βεβαίως ότι δώσαμε παραπάνω μνήμη στις εφαρμογές δεν σημαίνει ότι θα τη χρησιμοποιήσουν κιόλας γιατί αυτό θα γίνει μόνο όταν το χρειάζονται πραγματικά και όχι γιατί απλά υπάρχει διαθέσιμη.

Το /3gb σε Domain Controllers προτείνεται στην περίπτωση που η βάση έχει μέγεθος μεγαλύτερο από 1.5Gb και το σύστημα διαθέτει μνήμη RAM περισσότερη από 1.5GB. Πρέπει να λάβουμε υπόψη μας και το γεγονός πως η AD βάση (default: \windows\ntds\ntds.dit) δεν φορτώνεται εξ’ ολοκλήρου στην μνήμη κατά την εκκίνηση αλλά “ανεβαίνει” στην μνήμη όσο χρησιμοποιείται. Επομένως σε DCs οι οποίοι δεν χρησιμοποιούνται ιδιαίτερα το /3gb μπορεί να μην έχει νόημα.

Αναλόγως ισχύει για όλες τις εφαρμογές, γι’ αυτό και προτείνεται πριν προβούμε στην ενεργοποίηση της συγκεκριμένης ρύθμισης να έχουμε διερευνήσει κατά πόσο τη χρειαζόμαστε καθώς και να παρακολουθούμε τη σταθερότητα του συστήματος.

 

Περισσότερες πληροφορίες για το Lsass.exe στη διεύθυνση Memory usage by the Lsass.exe process