[Index de La FAQ] [Section 10 - Gestion du Système] [Section 12 - Questions Spécifiques Aux Plates-Formes]
La vitesse des E/S sur les disques est un facteur significatif de la vitesse globale de votre machine. Ce facteur devient de plus en plus important quand votre machine héberge un environnement multi utilisateur (des utilisateurs de toutes les catégories tels que les utilisateurs qui se connectent de manière interactive et les utilisateurs qui voient votre machine comme un serveur de fichiers ou un serveur Web). Le stockage de données demande une attention constante et particulièrement quand vos partitions ne contiennent plus d'espace libre ou quand vos disques ne fonctionnent plus. OpenBSD possède plusieurs options pour augmenter la vitesse des opérations sur disque. De plus il fournit des fonctionnalités de tolérance aux pannes.
Table des matières
La première option consiste à utiliser ccd(4) , le Pilote de Disques Concaténés. Il vous permet de grouper plusieurs partitions en un seul disque virtuel (ainsi vous pouvez rendre plusieurs disques visibles comme un seul disque). Ce concept est similaire au concept de LVM (gestion de volumes logiques) se trouvant dans plusieurs versions Unix commerciales.Si vous utilisez le noyau GENERIC, ccd est déjà activé (dans /usr/src/sys/conf/GENERIC). Si vous avez personnalisé votre noyau, vous aurez éventuellement besoin de refaire la configuration de votre noyau. Dans tous les cas, la ligne suivante devra figurer dans votre fichier de configuration noyau :
pseudo-device ccd 4 # concatenated disk devicesLa ligne précédente vous permet de configurer jusqu'à 4 périphériques ccd (disques virtuels). L'étape suivante consiste à choisir les partitions sur vos disques physiques que vous voulez consacrer à ccd. Utilisez disklabel pour marquer ces partitions en type 'ccd'. Sous certaines architectures, disklabel ne vous autorisera pas à effectuer cette opération. Dans ce cas, marquez les en 'ffs'.
Si vous utilisez ccd pour améliorer les performances à travers la technique du striping, il est à noter que vous n'aurez pas de performance optimale à moins que vous n'utilisiez le même modèle de disques avec le même paramétrage disklabel.
Editez le fichier /etc/ccd.conf afin qu'il ressemble à ce qui suit : (pour plus d'informations sur la configuration ccd, veuillez consulter ccdconfig(8))
# Configuration file for concatenated disk devices # # ccd ileave flags component devices ccd0 16 none /dev/sd2e /dev/sd3ePour que vos modifications prennent effet, exécutez :
# ccdconfig -CAussi longtemps que /etc/cdd.conf existera, ccd se configurera automatiquement lors du démarrage de la machine. A ce point, vous avez un nouveau disque dénommé ccd0; combinaison de /dev/sd2e et /dev/sd3e. Pour le partitionner, utilisez disklabel normalement. Nous vous rappelons qu'il ne faut pas utiliser la partition 'c' comme une partition réelle sur laquelle vous pouvez stocker des données. Assurez- vous que vos partitions soient au moins décalées d'un cylindre par rapport au début du disque.
raid(4) est une autre solution. Elle nécessitera l'utilisation de la commande raidctl(8) pour contrôler vos périphériques raid. le RAID OpenBSD est basé sur le port NetBSD du logiciel CMU RAIDframe par Greg Oster. OpenBSD supporte les niveaux RAID 0, 1, 4 et 5.Comme pour ccd, le support raid doit être configuré dans le NOYAU. Mais contrairement à ccd, le support RAID n'est pas configuré par défaut dans GENERIC. Il doit compilé au niveau du noyau (le support RAID ajoute 500k à la taille d'un noyau i386) :
pseudo-device raid 4 # RAIDframe disk deviceLa configuration du RAID sous certains systèmes d'exploitation peut prêter à confusion et s'avérer difficile. Ce n'est pas le cas avec RAIDframe. Consultez les pages de manuel raid(4) et raidctl(8) Pour des informations complètes. Il y a plusieurs options et configurations possibles. Une explication détaillée est au-delà du périmètre du présent document.
Un autre outil qui peut être utilisé pour accélerer la vitesse de votre système est softupdates. La mise à jour des informations meta ou metainfo (qui a lieu quand vous créez ou supprimez des fichiers et des répertoires entre autres) est une des opérations les plus lentes du système de fichiers BSD traditionnel. Softupdates tente de mettre à jour les metainfo dans la RAM au lieu d'écrire chaque mise à jour de metainfo sur le disque. Une autre conséquence est que les metainfo sur le disque devraient être toujours complètes, mais pas forcément à jour. Un crash système ne devrait donc pas nécessiter une opération fsck lors du démarrage de la machine, mais seulement une version d'arrière-plan de fsck(8) qui effectue des modifications aux metainfo en RAM (comme softupdates). Ce qui veut dire que le redémarrage d'un serveur est beaucoup plus rapide puisque vous n'avez pas besoin d'attendre que fsck finisse ! (OpenBSD ne possède pas cette fonctionnalité encore). Pour en savoir plus, consultez La FAQ Softupdates .
Le cache de traduction nom-vers-inode (name-to-inode ou namei()) contrôle la vitesse de la traduction chemin vers inode(5). Une valeur raisonnable de fixer une valeur pour le cache, si on venait à remarquer à l'aide d'un outil comme systat(1) , des erreurs d'allocation au niveau du cache, est d'examiner la valeur courante générée avec sysctl(8) , (qui appelle ce paramètre "kern.maxvnodes") et d'augmenter cette valeur soit jusqu'à ce que les le taux de réponse à partir du cache namei s'améliore soit jusqu'à ce qu'on détermine que le système ne bénéficie plus substantiellement de l'augmentation de la taille du cache namei. Une fois que la valeur est déterminée, vous pouvez la fixer au démarrage du système à l'aide de sysctl.conf(5).
(Remarque - cette section est très centrée autour de l'architecture i386 ou PC. Quelque part cela signifie que les autres architectures ne vous donnent pas autant de choix! )
La performance de vos applications dépend beaucoup de votre système d'exploitation et des fonctionnalités qu'il fournit. C'est peut-être une des raisons pour laquelle vous utilisez OpenBSD. La performance de vos applications dépend beaucoup de votre matériel aussi. Pour beaucoup de gens, le rapport prix/performance d'un nouveau PC doté d'un processeur Intel Pentium III ou AMD Athlon est bien meilleur que le rapport prix/performance d'une station Sun UltraSPARC 60! Et bien sûr, le prix de OpenBSD ne peut être battu.
Si vous allez acheter un PC, pièce par pièce ou assemblé, vous devez vous assurer que vous allez acheter des composants fiables. Dans le monde PC, ce n'est pas quelque chose de facile. OpenBSD peut être lent et souvent planter à cause de mauvais composants, des composants non fiables ou un mauvais assortiment de composants. Le meilleur conseil que nous pouvons vous donner est d'être très attentif, achetez des marques et des composants qui ont été testées par une autorité dans laquelle vous avez confiance. Parfois lorsque vous lésinez sur le prix d'un PC, vous perdez en qualité!
Il y a certaines choses qui vont vous aider à tirer le meilleur parti de votre matériel :
Si vous mettez en place un serveur, et que vous avez besoin de plus d'un disque, considérez la technologie SCSI. IDE vous limitent à deux disques par contrôleur. Des accès simultanés à ces deux disques peuvent avoir un impact négatif sur les performances E/S de ces disques. SCSI "Wide" vous limitent à 15 par contrôleur et gère les accès simultanés mieux qu'IDE. Certes, la technologie SCSI est plus coûteuse, mais sa flexibilité et ses performances peuvent justifier ces coûts dans certains environnements.
Question : "Je fais simplement "mount -u -o async /" ce qui rend un package dont j'ai besoin (qui touche à une centaine de chose de temps à autre) utilisable. Pourquoi le montage asynchrone n'est pas vu d'un bon il et n'est pas activé par défaut (comme c'est le cas sur d'autres versions d'Unix) ? C'est un mécanismesûrement plus simple et plus sûr d'améliorer les performances de certaines applications."
Réponse : " les montages asynchrones sont en effet plus rapides que des montages synchrones, mais ils sont aussi moins sûrs. Qu'arrive-t-il dans le cas d'une panne de courant ? Ou un problème matériel ? la quête de la vitesse ne doit pas sacrifier la fiabilité et la stabilité du système. Reportez-vous à la page du manuel de mount(8)."
async All I/O to the file system should be done asynchronously.
This is a dangerous flag to set since it does not guaran-
tee to keep a consistent file system structure on the
disk. You should not use this flag unless you are pre-
pared to recreate the file system should your system
crash. The most common use of this flag is to speed up
restore(8) where it can give a factor of two speed in-
crease.
D'un autre côté, quand vous travaillez avec des données temporaires que vous pouvez recréer après un plantage, vous pouvez gagnez en vitesse en utilisant une partition à part montée en asynchrone, utilisée uniquement pour ce type de données. Encore une fois, n'effectuez cette opération que si vous ne voyez pas d'inconvénient à perdre toutes les données de cette partition si quelque chose va mal. Pour cette raison, les partitions mfs(8) sont montées en mode asynchrone vu que de toute façon, elles vont être écrasées et recrées après un redémarrage.
Avec plusieurs moniteurs multi-sync, il est possible de configurer un serveur X avec une résolution acceptable. Si quelqu'un a déjà essayé de faire ceci avec les utilitaires standards xorgconfig ou XF86Setup, il est fort probable qu'il n'aie pas obtenu les meilleurs résultats possibles. Un des aspects les plus difficiles est de simplement configurer votre moniteur avec votre résolution préférée, puis de paramétrer la vitesse de balayage vertical à une valeur d'au moins 72-75 Hz, une valeur où le scintillement de l'écran est beaucoup moins visible à l'oeil humain. Inversement, qu'en est t'il quand vous essayez de positionner la vitesse de balayage vertical à une vitesse très faible ? Vous pouvez le positionner à 50 Hz de telle manière à pouvoir en capturer le contenu sur une vidéo sans scintillement, mais les méthodes pour effectuer cette opération ne sont pas évidentes avec les outils et la documentation standards de X.
Enfin, il est possible (avec les nouveaux moniteurs du moins) d'utiliser des vitesses de balayage vertical de 85 Hz et plus, afin d'obtenir une image très propre et agréable à des résolutions normalement utilisées par beaucoup de gens sur des moniteurs VGA à faible coût (800x600, 1024x768, 1152x900, 1280x1024). Le serveur X possède un mécanismequi vous permet de décrire en détail le mode vidéo que vous voulez utiliser : C'est le ModeLine. Un ModeLine a quatre sections. Un chiffre pour la dotclock (bande passante), quatre chiffres pour les temporisations horizontales, quatre chiffres pour les temporisations verticales, et une section optionnelle contenant une liste de drapeaux spécifiant d'autres caractéristiques du mode (telles que l'interlaçage, DoubleScan, ... Voir la page xorg.conf(5) du manuel pour plus de détails concernant ModeLine).
La génération d'un ModeLine s'apparente à de la magie noire... Heureusement, il existe plusieurs scripts qui peuvent vous en générer un. Un de ces scripts est Colas XFree86 ModeLine Generator. Un autre est The XFree86 ModeLine Generator hébérgé par SourceForge et plusieurs autres sont disponibles sur Freshmeat. Avant de pouvoir utiliser ces générateurs ModeLine, vous devez trouver les limites de synchronisation verticale et horizontale de votre moniteur. C'est souvent documenté dans le manuel ou sur le site Web du constructeur. Si ne vous trouvez ni l'un ni l'autre, faites une recherche sur le Web avec le modèle et la marque du moniteur. Plusieurs personnes sympathiques ont rassemblé des listes avec ce type d'informations.
Par exemple, supposons que vous avez un moniteur Dell D1226H. Vous avez effectué des recherches en agonisant sur le site Web de Dell pour savoir qu'il a une plage de balayage horizontal de 30-95 kHz et 50-160 Hz en balayage vertical. Visitez la page du générateur de ModeLine et saisissez ces informations. La prochaine étape consiste à saisir la vitesse minimale de balayage vertical que vous voulez. N'importe quelle vitesse de 72 Hz et au delà devrait permettre d'obtenir un scintillement peu visible. Plus vous montez la vitesse, plus votre image est claire et précise.
Avec toutes ces informations, le script va générer un ModeLine pour toutes les résolutions 4x3 possibles que votre moniteur peut supporter, et au-dessus de la vitesse minimale de balayage verticale que vous avez saisi. Si quelqu'un avait saisi les spécifications de ce moniteur Dell avec une vitesse minimale de balayage verticale de 75 Hz, le script donnera quelque chose comme :
ModeLine "320x240" 20.07 320 336 416 448 240 242 254 280 #160Hz ModeLine "328x246" 20.86 328 344 424 456 246 248 260 286 #160Hz ... ModeLine "816x612" 107.39 816 856 1056 1136 612 614 626 652 #145Hz ModeLine "824x618" 108.39 824 864 1064 1144 618 620 632 658 #144Hz ModeLine "832x624" 109.38 832 872 1072 1152 624 626 638 664 #143Hz ... ModeLine "840x630" 109.58 840 880 1080 1160 630 632 644 670 #141Hz ModeLine "848x636" 110.54 848 888 1088 1168 636 638 650 676 #140Hz ... ModeLine "1048x786" 136.02 1048 1096 1336 1432 786 788 800 826 #115Hz ModeLine "1056x792" 136.58 1056 1104 1344 1440 792 794 806 832 #114Hz ModeLine "1064x798" 137.11 1064 1112 1352 1448 798 800 812 838 #113Hz ... ModeLine "1432x1074" 184.07 1432 1496 1816 1944 1074 1076 1088 1114 #85Hz ModeLine "1576x1182" 199.86 1576 1648 2008 2152 1182 1184 1196 1222 #76Hz ModeLine "1584x1188" 198.93 1584 1656 2016 2160 1188 1190 1202 1228 #75Hz
Bien que ce moniteur prétend atteindre 1600x1200 @ 75 Hz, le script ne dit pas que cette résolution peut être atteinte à 75 Hz. Si vous voulez précisément avoir 1600x1200, abaissez un peu votre vitesse minimale ... (Dans l'exemple qui suit, nous fixons cette vitesse à 70 Hz)
ModeLine "1592x1194" 197.97 1592 1664 2024 2168 1194 1196 1208 1234 #74Hz ModeLine "1600x1200" 199.67 1600 1672 2032 2176 1200 1202 1214 1240 #74Hz ModeLine "1608x1206" 198.65 1608 1680 2040 2184 1206 1208 1220 1246 #73Hz ModeLine "1616x1212" 197.59 1616 1688 2048 2192 1212 1214 1226 1252 #72Hz ModeLine "1624x1218" 199.26 1624 1696 2056 2200 1218 1220 1232 1258 #72Hz ModeLine "1632x1224" 198.15 1632 1704 2064 2208 1224 1226 1238 1264 #71Hz ModeLine "1640x1230" 199.81 1640 1712 2072 2216 1230 1232 1244 1270 #71Hz ModeLine "1648x1236" 198.64 1648 1720 2080 2224 1236 1238 1250 1276 #70Hz
Comme on peut le voir, ce moniteur peut faire 1600x1200 @ 74 Hz quand la vitesse de point (bande passante) est limitée à 200 Mhz. Positionnez la bande passante par rapport aux limites définies par le moniteur.
Une fois que vous avez vos ModeLines, mettez les dans le fichier /etc/X11/xorg.conf. Mettez en commentaire les anciens ModeLines de telle façon à pouvoir les utiliser par la suite si les nouveaux ne fonctionnent pas. Ensuite choisissez votre résolution. D'abord vous devez déterminer si X tourne en mode accéléré (ce qui est le cas avec la plupart des cartes graphiques) afin de savoir quelle section "Screen" modifier dans le fichier xorg.conf. Sinon, modifiez toutes les sections Screen.
Section "Screen"
Driver "Accel"
Device "Primary Card"
Monitor "Primary Monitor"
DefaultColorDepth 32
SubSection "Display"
Depth 32
Modes "1280x1024" "1024x768"
EndSubSection
La première fréquence que vous voyez après la ligne "Modes" est la fréquence avec laquelle X va démarrer. En appuyant sur les touches CTRL-ALT-MOINS DU PAVE NUMERIQUE, ou CTRL-ALT-PLUS DU PAVE NUMERIQUE, vous pouvez commuter entre les fréquences que vous avez spécifié sur cette ligne. Selon la section ci-dessus, X va essayer de démarrer en mode couleur 32 bits (via la directive DefaultColorDepth sans laquelle X va démarrer en mode couleur 8 bits). La première résolution qu'il essayera de charger est 1280x1024 (il suit l'ordre précisé dans la ligne Modes). Notez que "1280x1024" est simplement un label des valeurs du ModeLine.
Il est à noter que le script de génération du ModeLine possède des options qui permettent de rendre ces temporisations plus flexibles pour les vieux ou petits moniteurs. De même, il a la capacité de fournir des ModeLines pour des résolutions spécifiques. Selon le type de matériel que vous avez, il ne sera peut-être pas facile de l'utiliser avec les options par défaut. Si l'image est trop grande, trop large, ou trop petite, ou elle est décalée horizontalement ou verticalement, et les contrôles du moniteur ne sont pas suffisants pour corriger son apparence, vous pouvez utiliser xvidtune(1) afin d'ajuster le ModeLine pour mieux respecter les temporisations du moniteur.
Sur la plupart des moniteurs modernes, il n'y a pas de limite fixée sur la bande passante. C'est pourquoi elles ne sont plus listées dans les spécifications. Mais plus vous augmentez la bande passante, plus l'image devient floue. Ainsi, vous pouvez commencer par la bande passante (appelée aussi "dotclock") de votre carte pour tester (vous ne pouvez pas abimer votre moniteur comme ça) et diminuer la bande passante au fur et à mesure jusqu'à ce que vous obteniez une image précise.
Cette procédure est inutilement complexe. X.org améliore nettement ce processus puisque cette version possède des modes internes et est capable de découvrir les capacités des moniteurs "plug and play" à travers DCC et DCC2. 5A
Vous pouvez télécharger le script Colas XFree86 ModeLine Generator à l'adresse http://koala.ilog.fr/ftp/pub/Klone/. Vous aurez besoin de télécharger et de compiler l'interpréteur Klone. Cet interpréteur se trouve dans la collection de ports sous lang/klone. Les scripts sont dans le répertoire scripts de la distribution Klone (la collection de ports les installe dans /usr/local/klone/scripts).
Deux versions du script sont incluses. La première est une version CGI identique à la page Web ci-dessus. La seconde est une version non-CGI qui va lire votre fichier xorg.conf dans sa totalité, décoder les spécifications du moniteur que vous avez saisi dans xorgconfig/XF86Setup (Réfléchissez, avez-vous réellement renseigné le fichier avec les spécifications de votre moniteur ou avez-vous gardé les valeurs génériques ?), et corriger les ModeLines existants en conséquence.
[Index de La FAQ] [Section 10 - Gestion du Système] [Section 12 - Questions Spécifiques Aux Plates-Formes]