Various updates.

This commit is contained in:
Marc Fonvieille 2004-09-02 20:02:06 +00:00
parent f0a31a64e3
commit 725347a499
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=22214

View file

@ -3,8 +3,7 @@
The FreeBSD French Documentation Project The FreeBSD French Documentation Project
$FreeBSD$ $FreeBSD$
$Id: chapter.sgml,v 1.8 2004-01-24 10:30:12 blackend Exp $ Original revision: 1.91
Original revision: 1.79
--> -->
<chapter id="config-tuning"> <chapter id="config-tuning">
@ -40,7 +39,9 @@
<sect1 id="config-synopsis"> <sect1 id="config-synopsis">
<title>Synopsis</title> <title>Synopsis</title>
<indexterm><primary>configuration/optimisation du <indexterm><primary>configuration du
syst&egrave;me</primary></indexterm>
<indexterm><primary>optimisation du
syst&egrave;me</primary></indexterm> syst&egrave;me</primary></indexterm>
<para>La configuration correcte d'un syst&egrave;me peut sensiblement <para>La configuration correcte d'un syst&egrave;me peut sensiblement
@ -67,6 +68,10 @@
<filename>rc.conf</filename> et des fichiers de d&eacute;marrage <filename>rc.conf</filename> et des fichiers de d&eacute;marrage
<filename>/usr/local/etc/rc.d</filename>.</para> <filename>/usr/local/etc/rc.d</filename>.</para>
</listitem> </listitem>
<listitem>
<para>Comment configurer et tester une carte
r&eacute;seau.</para>
</listitem>
<listitem> <listitem>
<para>Comment configurer des h&ocirc;tes virtuels sur vos <para>Comment configurer des h&ocirc;tes virtuels sur vos
p&eacute;riph&eacute;riques r&eacute;seau.</para> p&eacute;riph&eacute;riques r&eacute;seau.</para>
@ -1344,7 +1349,7 @@ round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms</screen>
avoir une adresse qui repr&eacute;sente correctement le masque de avoir une adresse qui repr&eacute;sente correctement le masque de
r&eacute;seau de votre r&eacute;seau. Tout autre adresse appartenant r&eacute;seau de votre r&eacute;seau. Tout autre adresse appartenant
&agrave; ce r&eacute;seau devra avoir un masque de r&eacute;seau &agrave; ce r&eacute;seau devra avoir un masque de r&eacute;seau
avec chaque bit &agrave; 1.</para> avec chaque bit &agrave; <literal>1</literal>.</para>
<para>Par exemple, consid&eacute;rez le cas o&ugrave; <para>Par exemple, consid&eacute;rez le cas o&ugrave;
l'interface <devicename>fxp0</devicename> est connect&eacute;e &agrave; l'interface <devicename>fxp0</devicename> est connect&eacute;e &agrave;
@ -1819,6 +1824,93 @@ device_probe_and_attach: cbb0 attach returned 12</screen>
faire des exp&eacute;riences pour le d&eacute;terminer.</para> faire des exp&eacute;riences pour le d&eacute;terminer.</para>
</sect3> </sect3>
<sect3>
<title><varname>vfs.write_behind</varname></title>
<indexterm>
<primary><varname>vfs.write_behind</varname></primary>
</indexterm>
<para>La variable sysctl <varname>vfs.write_behind</varname> est
positionn&eacute;e par d&eacute;faut &agrave;
<literal>1</literal> (activ&eacute;e). Elle demande au
syst&egrave;me de fichiers d'effectuer les &eacute;critures
lorsque des grappes compl&egrave;tes de donn&eacute;es ont
&eacute;t&eacute; collect&eacute;es, ce qui se produit
g&eacute;n&eacute;ralement lors de l'&eacute;criture
s&eacute;quentielle de gros fichiers. L'id&eacute;e est
d'&eacute;viter de saturer le cache tampon avec des tampons
sales quand cela n'am&eacute;liorera pas les performances d'E/S.
Cependant, cela peut bloquer les processus et dans certaines
conditions vous pouvez vouloir d&eacute;sactiver cette
fonction.</para>
</sect3>
<sect3>
<title><varname>vfs.hirunningspace</varname></title>
<indexterm>
<primary><varname>vfs.hirunningspace</varname></primary>
</indexterm>
<para>La variable sysctl <varname>vfs.hirunningspace</varname>
d&eacute;termine combien d'op&eacute;rations d'&eacute;criture
peuvent &ecirc;tre mises en attente &agrave; tout moment au
niveau des contr&ocirc;leurs disques du syst&egrave;me. La
valeur par d&eacute;faut est normalement suffisante mais sur les
machines avec de nombreux disques, vous pouvez vouloir
l'augmenter jusqu'&agrave; quatre ou cinq
<emphasis>m&eacute;ga-octets</emphasis>. Notez que fixer une
valeur trop &eacute;lev&eacute;e (d&eacute;passant la limite
d'&eacute;criture du cache tampon) peut donner lieu &agrave; de
tr&egrave;s mauvaises performances. Ne fixez pas cette valeur
&agrave; une valeur &eacute;lev&eacute;e arbitraire! Des
valeurs d'&eacute;criture &eacute;lev&eacute;es peuvent ajouter
des temps de latence aux op&eacute;rations d'&eacute;criture
survenant au m&ecirc;me moment.</para>
<para>Il existent d'autres variables sysctl relatives aux caches
tampons et aux pages VM. Nous ne recommandons pas de modifier
ces valeurs. Depuis &os;&nbsp;4.3, le syst&egrave;me VM
effectue un tr&egrave;s bon travail d'auto-optimisation.</para>
</sect3>
<sect3>
<title><varname>vm.swap_idle_enabled</varname></title>
<indexterm>
<primary><varname>vm.swap_idle_enabled</varname></primary>
</indexterm>
<para>La variable <varname>vm.swap_idle_enabled</varname> est
utile dans le cas de syst&egrave;mes multi-utilisateurs
importants o&ugrave; il y a beaucoup d'utilisateurs s'attachant
et quittant le syst&egrave;me et de nombreux processus inactifs.
De tels syst&egrave;mes tendent &agrave; g&eacute;n&eacute;rer
une pression assez importante et continue sur les
r&eacute;serves de m&eacute;moire libres. Activer cette
fonction et r&eacute;gler l'hyst&eacute;resis de
lib&eacute;ration de l'espace de pagination (en secondes
d'inactivit&eacute;) par l'interm&eacute;diaire des variables
<varname>vm.swap_idle_threshold1</varname> et
<varname>vm.swap_idle_threshold2</varname>, vous permet de
diminuer la priorit&eacute; des pages m&eacute;moire
associ&eacute;es avec les processus inactifs plus rapidement
qu'avec l'algorithme normal de lib&eacute;ration. Cela aide le
<quote>daemon</quote> de lib&eacute;ration des pages. N'activez
cette option que si vous en besoin, parce que la concession que
vous faites est d'utiliser l'espace de pagination pour les pages
m&eacute;moire plus t&ocirc;t qu'&agrave; l'accoutum&eacute;,
consommant par cons&eacute;quent plus d'espace de pagination et
de bande passante disque. Sur un petit syst&egrave;me, cette
option aura un effet limit&eacute; mais dans le cas d'un
syst&egrave;me important qui fait appel &agrave; l'espace de
pagination de fa&ccedil;on mod&eacute;r&eacute;e, cette option
permettra au syst&egrave;me VM de transf&eacute;rer l'ensemble
des processus de et vers la m&eacute;moire
ais&eacute;ment.</para>
</sect3>
<sect3> <sect3>
<title><varname>hw.ata.wc</varname></title> <title><varname>hw.ata.wc</varname></title>
@ -1858,6 +1950,32 @@ device_probe_and_attach: cbb0 attach returned 12</screen>
<para>Pour plus d'informations, veuillez consulter la page de <para>Pour plus d'informations, veuillez consulter la page de
manuel &man.ata.4;.</para> manuel &man.ata.4;.</para>
</sect3> </sect3>
<sect3>
<title><literal>SCSI_DELAY</literal>
(<varname>kern.cam.scsi_delay</varname>)</title>
<indexterm>
<primary><literal>SCSI_DELAY</literal></primary>
<secondary><varname>kern.cam.scsi_delay</varname></secondary>
</indexterm>
<para>L'option de configuration du noyau
<literal>SCSI_DELAY</literal> peut &ecirc;tre utilis&eacute;e
pour r&eacute;duire le temps de d&eacute;marrage du
syst&egrave;me. Le d&eacute;lai par d&eacute;faut est important
et peut &ecirc;tre responsable de plus de <literal>15</literal>
secondes d'attente lors du processus de d&eacute;marrage.
R&eacute;duire ce d&eacute;lai &agrave; <literal>5</literal>
secondes est g&eacute;n&eacute;ralement suffisant (tout
particuli&egrave;rement avec les disques modernes). Les
versions de &os; r&eacute;centes (5.0 et suivantes) devraient
utiliser l'option de d&eacute;marrage
<varname>kern.cam.scsi_delay</varname>. Cette option de
d&eacute;marrage et celle de configuration du noyau acceptent
des valeurs en <emphasis>millisecondes</emphasis> et <emphasis>non pas</emphasis> en
<emphasis>secondes</emphasis>.</para>
</sect3>
</sect2> </sect2>
<sect2 id="soft-updates"> <sect2 id="soft-updates">
@ -2170,28 +2288,217 @@ device_probe_and_attach: cbb0 attach returned 12</screen>
valeur raisonnable par d&eacute;faut bas&eacute;e sur la valeur raisonnable par d&eacute;faut bas&eacute;e sur la
quantit&eacute; de m&eacute;moire pr&eacute;sente sur votre quantit&eacute; de m&eacute;moire pr&eacute;sente sur votre
syst&egrave;me.</para></note> syst&egrave;me.</para></note>
</sect3>
<sect3>
<title><varname>kern.ipc.somaxconn</varname></title>
<indexterm>
<primary><varname>kern.ipc.somaxconn</varname></primary>
</indexterm>
<para>La variable sysctl <varname>kern.ipc.somaxconn</varname>
limite la taille de la file d'attente acceptant les
nouvelles connexions TCP. La valeur par d&eacute;faut de
<literal>128</literal> est g&eacute;n&eacute;ralement trop
faible pour une gestion robuste des nouvelles connexions
dans un environement de serveur web tr&egrave;s
charg&eacute;. Pour de tels environnements, il est
recommand&eacute; d'augmenter cette valeur &agrave;
<literal>1024</literal> ou plus. Le <quote>daemon</quote>
en service peut de lui-m&ecirc;me limiter la taille de la
file d'attente (e.g. &man.sendmail.8;, ou
<application>Apache</application>) mais disposera, la
plupart du temps, d'une directive dans son fichier de
configuration pour ajuster la taille de la file d'attente.
Les files d'attentes de grandes tailles sont plus
adapt&eacute;es pour &eacute;viter les attaques par
d&eacute;ni de service (<abbrev>DoS</abbrev>).</para>
</sect3> </sect3>
</sect2> </sect2>
<sect2> <sect2>
<title>Limitations r&eacute;seau</title> <title>Limitations r&eacute;seau</title>
<para>L'option du noyau <option>NMBCLUSTERS</option> fixe la <para>L'literal du noyau <literal>NMBCLUSTERS</literal> fixe la
quantit&eacute; de &ldquo;mbuf&rdquo;s disponibles pour le quantit&eacute; de <quote>Mbuf</quote>;s disponibles pour le
syst&egrave;me. Un serveur &agrave; fort trafic avec un nombre faible syst&egrave;me. Un serveur &agrave; fort trafic avec un nombre faible
de &ldquo;mbuf&rdquo;s sous-emploiera les capacit&eacute;s de FreeBSD. de <quote>Mbuf</quote>;s sous-emploiera les capacit&eacute;s de FreeBSD.
Chaque &ldquo;cluster&rdquo; repr&eacute;sente approximativement 2KO Chaque &ldquo;cluster&rdquo; repr&eacute;sente approximativement 2&nbsp;Ko
de m&eacute;moire, donc une valeur de 1024 repr&eacute;sente 2 de m&eacute;moire, donc une valeur de 1024 repr&eacute;sente 2
m&eacute;gaoctets de m&eacute;moire noyau r&eacute;serv&eacute;e m&eacute;gaoctets de m&eacute;moire noyau r&eacute;serv&eacute;e
pour les tampons r&eacute;seau. Un simple calcul peut pour les tampons r&eacute;seau. Un simple calcul peut
&ecirc;tre fait pour d&eacute;terminer combien sont &ecirc;tre fait pour d&eacute;terminer combien sont
n&eacute;cessaires. Si vous avez un serveur web qui culmine &agrave; n&eacute;cessaires. Si vous avez un serveur web qui culmine &agrave;
1000 connexions simultan&eacute;es, et que chaque connexion 1000 connexions simultan&eacute;es, et que chaque connexion
consomme un tampon de r&eacute;ception de 16KO et un tampon consomme un tampon de r&eacute;ception de 16Ko et un tampon
d'&eacute;mission de 16KO, vous avez approximativement besoin d'&eacute;mission de 16&nbsp;Ko, vous avez approximativement besoin
de 32MO de tampon r&eacute;seau pour couvrir les besoin du de 32&nbsp;Mo de tampon r&eacute;seau pour couvrir les besoin du
serveur web. Un bon principe est de multiplier ce nombre serveur web. Un bon principe est de multiplier ce nombre
par 2, soit 2x32 MO / 2KO = 64MO / 2KO =32768.</para> par 2, soit 2x32&nbsp;Mo / 2&nbsp;Ko = 64&nbsp;Mo / 2&nbsp;Ko =32768.
Nous recommendons des valeurs comprises entre 4096 et 32768
pour les machines avec des quantit&eacute;s de m&eacute;moire
plus &eacute;lev&eacute;es. Vous ne devriez, dans aucun
circonstance, sp&eacute;cifier de valeur &eacute;lev&eacute;e
arbitraire pour ce param&egrave;tre &eacute;tant donn&eacute;
que cela peut &ecirc;tre &agrave; l'origine d'un plantage au
d&eacute;marrage. L'option <option>-m</option> de
&man.netstat.1; peut &ecirc;tre utilis&eacute;e pour observer
l'utilisation des <quote>clusters</quote>.</para>
<para>La variable <varname>kern.ipc.nmbclusters</varname>
configurable au niveau du chargeur est utilis&eacute;e pour
ajuster cela au d&eacute;marrage. Seules les anciennes
versions de &os; vous demanderont d'utiliser l'option de
configuration du noyau <literal>NMBCLUSTERS</literal>.</para>
<para>Pour les serveurs charg&eacute;s qui font une utilisation
intensive de l'appel syst&egrave;me &man.sendfile.2;, il peut
&ecirc;tre n&eacute;cessaire d'augmenter le nombre de tampons
&man.sendfile.2; par l'interm&eacute;diaire de l'option de
configuration du noyau <literal>NSFBUFS</literal> ou en fixant
sa valeur dans le fichier
<filename>/boot/loader.conf</filename> (consultez la page de
manuel &man.loader.8; pour plus de d&eacute;tails). Un
indicateur de la n&eacute;cessit&eacute; d'ajuster ce
param&egrave;tre est lorsque des processus sont dans
l'&eacute;tat <literal>sfbufa</literal>. La variable sysctl
<varname>kern.ipc.nsfbufs</varname> est un aper&ccedil;u en
lecture seule de la variable du noyau. Ce param&egrave;tre
s'ajuste de fa&ccedil;on optimale avec
<varname>kern.maxusers</varname>, il peut &ecirc;tre cependant
n&eacute;cessaire de l'ajuster en fonction des besoins.</para>
<important>
<para>M&ecirc;me si une <quote>socket</quote> a
&eacute;t&eacute; marqu&eacute;e comme &eacute;tant
non-bloquante, un appel de &man.sendfile.2; sur la
<quote>socket</quote> non-bloquante peut r&eacute;sulter en un
blocage de l'appel &man.sendfile.2; jusqu'&agrave; ce que
suffisament de <literal>struct sf_buf</literal> soient
lib&eacute;r&eacute;es.</para>
</important>
<sect3>
<title><varname>net.inet.ip.portrange.*</varname></title>
<indexterm>
<primary>net.inet.ip.portrange.*</primary>
</indexterm>
<para>Les variables <varname>net.inet.ip.portrange.*</varname>
contr&ocirc;lent les intervalles de ports automatiquement
allou&eacute;s aux <quote>socket</quote>s TCP et UDP. Il y
a trois intervalles: un intervalle bas, un intervalle par
d&eacute;faut, et intervalle un haut. La plupart des
programmes r&eacute;seau utilisent l'intervalle par
d&eacute;faut qui est contr&ocirc;l&eacute; par
<varname>net.inet.ip.portrange.first</varname> et
<varname>net.inet.ip.portrange.last</varname>, qui ont pour
valeur par d&eacute;faut respectivement 1024 et 5000. Ces
intervalles de ports sont utilis&eacute;s pour les
connexions sortantes, et il est possible de se trouver
&agrave; court de ports dans certaines conditions. Cela
arrive le plus souvent quand votre syst&egrave;me fait
tourner un proxy web tr&egrave;s charg&eacute;.
L'intervalle de ports n'est pas un probl&egrave;me quand
vous ex&eacute;cutez des serveurs qui ne g&egrave;rent
principalement que des connexions entrantes, comme un server
web classique, ou qui ont un nombre de connexions sortantes
limit&eacute;es comme un relai de messagerie. Pour les cas
o&ugrave; vous risquez d'&ecirc;tre &agrave; court de ports,
il est recommand&eacute; d'augmenter
l&eacute;g&egrave;rement
<varname>net.inet.ip.portrange.last</varname>. Une valeur
de <literal>10000</literal>, <literal>20000</literal> ou
<literal>30000</literal> doit &ecirc;tre suffisante. Vous
devriez &eacute;galement penser au probl&egrave;me du
coupe-feu lors du changement de l'intervalle des ports.
Certains coupes-feu peuvent bloquer de grands intervalles de
ports (en g&eacute;n&eacute;ral les ports inf&eacute;rieurs)
et s'attendent &agrave; ce que les syst&egrave;mes utilisent
les intervalles sup&eacute;rieurs pour les connexions
sortantes &mdash; pour cette raison il est conseill&eacute;
de diminuer
<varname>net.inet.ip.portrange.first</varname>.</para>
</sect3>
<sect3>
<title>Le produit d&eacute;lai-bande passante TCP</title>
<indexterm>
<primary>limitation du produit d&eacute;lai-bande passante
TCP</primary>
<secondary><varname>net.inet.tcp.inflight_enable</varname></secondary>
</indexterm>
<para>La limitation du produit d&eacute;lai-bande passante TCP
est semblable au TCP/Vegas sous NetBSD. Elle peut
&ecirc;tre activ&eacute;e en positionnant &agrave;
<literal>1</literal> la variable
<varname>net.inet.tcp.inflight_enable</varname>. Le
syst&egrave;me tentera alors de calculer le produit
d&eacute;lai-bande passante pour chaque connexion et
limitera la quantit&eacute; de donn&eacute;es en attente
&agrave; la quantit&eacute; juste n&eacute;cessaire au
maintient d'un flux de sortie optimal.</para>
<para>Cette fonctionnalit&eacute; est utile si vous diffusez
des donn&eacute;es par l'interm&eacute;diare de modems, de
connexions Ethernet Gigabit, ou m&ecirc;me de liaisons hauts
d&eacute;bits WAN (ou toute autre liaison avec un produit
d&eacute;lai-bande passante &eacute;lev&eacute;), tout
particuli&egrave;rement si vous utilisez &eacute;galement le
dimensionnement des fen&ecirc;tres d'&eacute;mission ou que
vous avez configur&eacute; une fen&ecirc;tre
d'&eacute;mission importante. Si vous activez cette option,
vous devriez &eacute;galement vous assurer que
<varname>net.inet.tcp.inflight_debug</varname> est
positionn&eacute;e &agrave; <literal>0</literal>
(d&eacute;sactive le d&eacute;bogage), et pour une
utilisation en production, fixer
<varname>net.inet.tcp.inflight_min</varname> &agrave; au
moins <literal>6144</literal> peut &ecirc;tre
b&eacute;n&eacute;fique. Notez, cependant, que fixer des
minimas &eacute;lev&eacute;s peut d&eacute;sactiver la
limitation de bande passante selon la liaison. La fonction
de limitation diminue la quantit&eacute; de donn&eacute;es
accumul&eacute;es dans les files d'attente
interm&eacute;diaire de routage et de commutation, et
diminue &eacute;galement la quantit&eacute; de
donn&eacute;es pr&eacute;sentes dans les files d'attente de
l'interface de la machine locale. Avec moins de paquets
dans les files d'attente, les connexions interactives, tout
particuli&egrave;rement sur des modems lents, seront en
mesure de fonctionner avec des <emphasis>temps
d'aller-retour</emphasis> plus faible. Mais cette
fonctionnalit&eacute; n'affecte que la transmission de
donn&eacute;es (transmission c&ocirc;t&eacute; serveur).
Ceci n'a aucun effet sur la r&eacute;ception de
donn&eacute;es (t&eacute;l&eacute;chargement).
</para>
<para>Modifier <varname>net.inet.tcp.inflight_stab</varname>
n'est <emphasis>pas</emphasis> recommand&eacute;. Ce
param&egrave;tre est fix&eacute; par d&eacute;faut &agrave;
la valeur 20, repr&eacute;sentant au maximum 2 paquets
ajout&eacute;s &agrave; la fen&ecirc;tre de calcul du
produit d&eacute;lai-bande passante. La fen&ecirc;tre
suppl&eacute;mentaire est n&eacute;cessaire pour stabiliser
l'algorithme et am&eacute;liorer la r&eacute;ponse aux
changements de conditions, mais il peut en r&eacute;sulter
des temps de <quote>ping</quote> plus &eacute;lev&eacute;s
sur les liaisons lentes (mais cependant inf&eacute;rieurs
&agrave; ce que vous obtiendriez sans l'algorithme de
limitation). Dans de tels cas, vous pouvez essayer de
r&eacute;duire ce param&egrave;tre &agrave; 15, 10, ou 5, et
vous pouvez avoir &agrave; r&eacute;duire le
param&egrave;tre
<varname>net.inet.tcp.inflight_min</varname> (par exemple
&agrave; 3500) pour obtenir l'effet d&eacute;sir&eacute;.
Ces param&egrave;tres ne doivent &ecirc;tre r&eacute;duits
qu'en dernier ressort.</para>
</sect3>
</sect2> </sect2>
</sect1> </sect1>