Sur un serveur de base de données dédié, combien de mémoire réserver pour le système d'exploitation?

38

En supposant que vous ayez un serveur dédié explicitement pour les fonctions de base de données - combien de mémoire devriez-vous réserver pour le système d'exploitation?

Je me rends compte que cela variera probablement quelque peu en fonction du système d'exploitation, du logiciel de base de données, etc. Mais, comme la mémoire est si importante pour les performances de la base de données, je souhaite que la base de données ait le niveau de mémoire maximal raisonnable, sans affaiblir le système d'exploitation hôte.

Alors

  • Quelle est la bonne règle pour commencer?
  • Quels compteurs ou indicateurs de performance devrions-nous examiner pour déterminer si nous sommes allés trop loin et si le système d'exploitation hôte est en quelque sorte mis à mal par la base de données?
Jeff Atwood
la source
Avez-vous déjà modifié ces paramètres? Qu'est-ce que votre profilage vous a dit?
jcolebrand
@jcole rien à ajouter pour le moment; nous réservons généralement 4 à 6 gb pour le système d'exploitation, ce qui est un peu plus conservateur que je ne le souhaiterais
Jeff Atwood

Réponses:

30

En supposant que Windows et SQL Server ...

Il y a deux écoles de pensée.

  1. Laissez 2-4 Go pour Windows (en fonction de ce qui est installé à part SQL Server).
  2. Laissez 10% de votre mémoire disponible libre. Avec plus de 64 concerts, cela devient une quantité de mémoire folle à laisser au système d'exploitation, ce dont il n'aura probablement pas besoin.

Personnellement je suis dans le premier groupe. Windows ne nécessite généralement que 2 à 4 concerts, parfois jusqu'à 6.

mrdenny
la source
2
Conformez-vous à 2 Go de RAM pour le système d’exploitation.
jcolebrand
Je suis aussi d'accord En général, je laisse 2 Go pour le système d'exploitation et je m'assure également d'un espace de fichier page contigu. Bien entendu, votre kilométrage peut varier et votre meilleur choix est de configurer les paramètres, de surveiller les performances et d'apporter les modifications prudentes nécessaires.
Matt M
2
@matt d'accord, mais que faut-il surveiller de mieux, en particulier "suis-je en train de priver de mémoire le système d'exploitation?"
Jeff Atwood le
1
@ Jeff Mon commentaire n'était pas aussi précis qu'il aurait dû l'être. Pour la mémoire, je regarde généralement les compteurs de performance suivants: Mémoire: Pages / s et Mémoire: Octets disponibles. Consultez ces pages pour plus d'informations: sql-server-performance.com/articles/audit/… et technet.microsoft.com/en-us/library/cc966540.aspx (plus précisément la section relative aux goulots d'étranglement de la mémoire)
Matt M
6
La réponse de @Jeff Denny est juste, et pour les compteurs Perfmon, regardez Mémoire: Octets disponibles. Si elle tombe en dessous, disons 512 Mo, vous risquez de priver le système d'exploitation. Cependant, gardez également à l'esprit
Brent Ozar
16

En supposant que Linux, si vous désactivez le swap et que le noyau tue continuellement votre processus de base de données car il manque de mémoire, c'est un bon indicateur du fait que votre système d'exploitation manque de mémoire. Reculez jusqu'à ce que cela cesse de se produire. Quelques centaines de Mo est généralement suffisant.

Dan Grossman
la source
+1 pour le profil de profil profil ~ cependant étant Jeff askin, je présume que c'est SQLServer et Windows à coup sûr;)
jcolebrand
1
@jcolebrand cependant, sachant aussi que @jeff, vous reconnaîtrez qu'il n'a pas dit, ce qui signifie qu'il l'a intentionnellement laissé ouvert pour toutes les plates-formes et bases de données.
Xenoterracide
2
Et, sachant toujours que c'est @ jeff ... pourquoi ne devrait-il pas être capable d'apprendre à cesser de s'inquiéter et à aimer Linux? ;-)
Jürgen A. Erhard
8

Vous pouvez tirer parti de l'expérience d'Amazon en exécutant des milliers de serveurs de base de données clients ici: Sur Amazon Relational Database Service, le pool de mémoire tampon innodb de MySQL est défini sur 3/4 de la mémoire du système, quelle que soit la quantité de mémoire utilisée. Ajoutez jusqu'à quelques Mo par connexion pour différents tampons de requête, et ils laisseront probablement 10 à 20% de la mémoire au système d'exploitation.

Dan Grossman
la source
5

Vous devriez lire la position de Brent Ozar sur la mémoire. Il a quelques réponses assez standard sur pourquoi vous devriez regarder la mémoire et pourquoi plus de mémoire équivaut à de meilleures performances. En règle générale, 4 Go ou 10% réservés pour le système d'exploitation.

Troie
la source