Utilisation du Pata JMicron sur P5B-VM sous Opensuse 10.1

Bon … pour accéder au controleur PATA JMicron de la carte mère Asus … c’est pas gagné !!! En tout cas on finit par y arriver avec un peu de patience. Dans la doc c’est possible, et ca l’est en effet, mais ce n’est pas trivial. Je vous donne la liste des manip que j’ai dû faire :(sans pour autant garantir que tout soit utile

  • Dans le bios, configurer le JMicron en mode AHCI
  • Booter l’install de la 10.2 puis dès que possible passer sur un terminal (CTRL+ALT+F9)
  • Charger le module par modprobe pata_jmicron
  • Jeter un oeil avec dmesg pour voir ce qui s’est passé …

Pour ma part le cdrom est sur /dev/sr0 et le disque dur semble etre sur /dev/sdb

Cette manip faite il ets presque possible d’installer suse 10.2 à partir du CD, j’ai toutefois du passer par la case “vérification du support” avant que l’installeur veuille bien me monter le cdrom

Revenir au double click sous KDE

Franchement …. le simple clic c’est chiant !! passer son temps à ouvrir des documents alors qu’on souhaite faire une selection multiple est gavant ! bref, retour aux concepts initiaux : le double clic… problème où est cette foutue option dans KDE !

Après quelques longues recherches : la solution est

  • Panneau de config de KDE
  • Périphérique / Souris
  • Option Simple/Doucle clic

Sauvé !

Dell L400 et configuration ACPI

Autant sur une machine de bureau, l’acpi on vit bien sans, autant sur un portable on frole de danger si ca ne marche pas correctement ; à mettre en rapport avec mes remarques sur la suse 10 et 10.1 qui m’on values quelques arrets pour surchauffe ! Une solution qui semble bien fonctionner : couper l’acpi au démarrage (acpi=off) lors du prompt de sorte à laisser le bios se débrouiller…

Pour faire plus propre, il est toutefois possible de “débugger son acpi” : en fait, dans les distro classiques, on va avoir une configuration acpi générique : elle fontionne bien dans beaucoup de cas, mais pas toujours (un portable standard ca existe ?). Il est alors possible de mettre à jour l’acpi pour qu’il supporte correctement la machine… En voici la recette, appliquée sur mon L400.

  • Se procurer le fichier DSDT adapté au portable. (Tout est dans ce fichier de description de l’acpi !). Pour se faire, il faut télécharger le fichier sur cette adresse en précisant le constructeur et la marque.
  • Il faut ensuite compiler se fichier à l’aide de l’utilitaire fournit par Intel ici en choisissant la version source unix. Il faudra d’abord compiler le compilateur (nécessite bison et flex) en lançant make dans le répertoire compiler. Il faudra ensuite compiler la DSDT précedemment télécharger avec la commande suivante :
    iasl -tc dsdt.asl ce qui devrait générer un fichier de type dsdt.hex qui n’est d’autre en fait qu’un fichier de type “.h”
  • L’etape suivante consiste à recompiler son noyau pour ce celà soit pris en compte. Tout d’abord preparrons un noyau : make clean ; make mprpoper; make cloneconfig puis lancer la configuration via X make xconfig
  • La configuration de la nouvelle DSDT est, sur les noyaux 2.6.13 plus simple que ce qui est décrit sur les HOWTO classiques : dans la rubrique Power management options/acpi/ il faut cocher Include Custom DSDT puis double clicker sur Custom DSDT Table file to include et entrez le chemin complet jusqu’au fichier .hex.
  • Il reste à compiler le noyau :make
  • Enfin, il faut recopier le noyau ainsi obtenu dans le répertoire /boot. le noyau se trouve dans le répertoire /usr/src/linux/arch/i386/boot sous le nom de bzImage, il sera compié dans /boot sous le nom de vmlinuz-xxxx-version-xxx-acpi par exemple (voir le format de celui existant) et il faudra alors mettre à jour le lien symbolique de vmlinuz.
  • Pour terminer… on reboote

Demarrage d’un noyau Xen en réseau via PXE

Un article précédent décrit brièvement comment booter une machine sur le réseau en utilisant PXE. Je me suis donc amusé à booter, cette fois ci, non pas un noyau classique mais un moyau Xen. De prime abord cela pourrait sembler être semblable mais il n’en est rien !

L’utilisation de Xen demande de booter un premier noyau “gen.gz” qui va lui-même, par la suite, booter un second noyau compilé spécifiquement. L’utilisation de pxelinux.0 comme bootloader n’est donc plus possible dans un tel cas. Voici donc la procédure à suivre :

  • Il faut tout d’abord créer un noyau compatible Xen et acceptant un boot depuis le reseau, pour celà, je vous renvoie à l’article précédent qui indiques les options que celui-ci doit supporter. Ce noyau devra en outre être compilé pour une cible de type XEN.
  • Il faut ensuite récupérer un bootloader adapté, celui-ci se trouve dans le package Syslinux (il est possible qu’il ne soit pas livré avec votre distribution, il suffit alors de le télécharger sur le net). Le bootloader en question est mboot.c32 ; il se trouve dans syslinux/com32/modules. Ce fichier sera placé dans le répertoire tftpboot sur serveur.
  • La configuration de PXE se fait dans le fichier dhcp.conf, exactement comme nous l’avions fait précédemment. Rien ne change.
  • Dans le fichier de démarrage (tftpboot/pxelinux.cfg/mac-adress ) nous allons trouver la configuration suivantes :
    default linux
    label linux
      kernel mboot.c32
      append xen.gz dom0_mem=192000 --- vmlinuz_xen root=/dev/nfs devfs=mount ip=::::::dhcp nfsroot=10.0.0.20:/share/homeXen initrd=initrd_xen
    prompt   1
    timeout  10
    • Le noyau qui sera booté en premier est le fameux mboot.c32
    • Celui-ci va lancer la couche basse de XEN (xen.gz) qui est à récupérer dans le package de XEN
    • Le premier noyau va être configuré avec 192Mo de mémoire
    • Il va ensuite lancer le noyau linux compilé pour XEN : vmliuz_xen
    • Le boot se fera depuis le réseau, la configuration etant obtenue par dhcp
  • Le noyau ainsi démarré va encore poser un problème : lorsque XEN demarre en mode bridge, il tombe l’interface réseau, ce qui bien sure lors d’un boot NFS plante la suite du démarrage. Une des solution est l’utilisation du mode rootage plutot que bridge. Il faut modifier le fichier /etc/xen/xend-config.sxp :
    • Mettre en commentaire les deux lignes de confugration du bridge :(network-script network-bridge) et (vif-script vif-bridge)
    • Décommenter les lignes du mode routage : (network-script network-route) (vif-script vif-route)

    Pour ceux qui comme moi tiendraient vraiment à utiliser une configuration de type bridge, je n’ai rien trouvé de mieux que d’utiliser une seconde carte réseau sur la machine …

Utilisation d’un fichier comme SWAP avec Linux

Sur un pc sans disque (mais aussi parfois sur une machine virtuelle), il n’est par définition pas possible de créer une partition dédiée au swap, dans ce cas, il est possible d’utiliser un fichier en temps que swap.
La création consiste en les étapes suivantes :

  • Créer un fichier de swap : dd if=/dev/zero of=/swapfile bs=1024 count=xxx avec xxx = taille en Ko du swap
  • Créer en temps que swap : mkswap /swapfile
  • Il faut ensuite associer ce fichier à un périphérique : losetup /dev/loop0 /swapfile
  • Puis activer ce swap : swapon /dev/loop0

Créer un disquette de boot permettant de faire un demarrage PXE sans ROM réseau

Dans un précédent article, j’ai indiqué comment booter depuis un PC diskless en utilisant la fonction boot-pxe de la carte réseau. Toutefois sur un pc un peu ancien il est rare de trouver une carte supprotant le pxe… Dans ce cas, il y a une solution simple : créer une disquette de boot minimaliste avec les driver PXE pour ensuite demarrer sur le réseau. (je retrouve ainsi enfin une utilité à mon lecteur de disquette !! génial !)

La démarche est assez simple d’autant que tout est automatiser : il faut créer une disquette de boot sur le site suivant : http://rom-o-matic.net/5.4.2/

  • Choisir la carte réseau dans la liste
  • Choisir le format de sortie : Floppy bootable ROM image (.zdsk)
  • Choisir customize ROM Option et choisir :
    • USE_STATIC_BOOT_INFO en indiquant toute la configuration (je ne sais pour quelle raison, les infos dhcp ne sont pas reçu sur le client dans ma config)
    • PXELOADER_KEEP_ALL
  • Sélectionner le bouton “Get ROM”
  • ecrire le fichier sur une disquette : cat eb-5.4.2-driver.zdsk > /dev/fd0
  • configurer le serveur pxe comme indiqué dans le précédent article
  • booter !

Et voila … une machine sans disque dur qui boote sur le réseaux avec une carte réseau ne supportant pas PXE ;o)

Configuration mémoire d’une JVM (suite)

Suite a mon article sur un peu d’optimisation mémoire en Java, J’ai reçu une question interressante ; ma réponse me semble pouvoir être partagée en complément :

Je me demande si il existe une formule permettant de déterminer quelle taille maximum peut on allouer a l option -Xmx en fonction de la ram, de la taille des fichiers d’échange, …. Si tu as des infos …

En première approche, sans contexte, il ne me semble pas possible de répondre à cette question sous la forme d’une formule toutefois, voici les principaux éléments auxquels je pense :
Je ne pense pas qu’il y ait de formule magique … Java va utiliser la mémoire tant qu’il y en a, y compris s’il n’en a plus besoin en ne passant plus le GC, en tout cas jusqu’a atteindre Xmx – Xms … bref, ca va swapper et ce n’est pas forcement conseillé !
Tout dépend de ce que tu souhaites : éviter un crash de la JVM a tout prix ou preserver les performances. Si l’appli demande plus de mémoire qu’il n’y en a sur le système, je n’ai qu’un conseil : acheter de la RAM.

Pour mon usage personnel, je concidèrerai le paramétrage suivant (à noter qu’il ne s’agit que d’une borne max) :

Xmx – Xms < RAM_totale – RAM_utilisée_hors_JVM – marge (RAM_totale*0.1)

Ce qui peut être proche de :
Xmx < Xms + 0.9*RAM_libre

Ce qui ne répond qu’à moitier à la question puisqu’il reste à déterminer Xms.
Là, tout dépend de l’application ; plus Xms est grand plus tu augmentes Xmx dans mon équation et moins tu risques de saturer la mémoire de la JVM (si c’est le pbm) mais plus tu risques de swapper.
Par ailleurs, attention, si Xmx > RAM_totale tu pénalises les applications autres que Java car Java va utiliser toute la mémoire qu’on lui donne. Dans ce cas tu peux avoir des impacts très forts sur les applications telles que la base de donnée par exemple et pénaliser ton application… d’où bien prendre en compte la RAM_utilisée_hors_JVM et une marge pour ces applications.

Le risque en saturant la RAM est que lors d’un pic d’utilisation tu auras à la fois une JVM surchargée et des applications tierses sans mémoire = écroulement du serveur…(c’est peut-être une banalité ce que je dis là mais rien ne dis qu’il n’y aura pas de la perte de mémoire dans la JVM alors que les autres appli seront dejà HS)
Sauf contexte particulier, la RAM ne coute pas chere et les performances disques sont beaucoup trop médiocres … donc achetez de la RAM !

A l’opposé, si je peux aussi proposer un conseil à ceux qui ne cessent d’acheter de la RAM et voient toujours leur serveur saturés… jouez un peu sur les paramétrages, Java, mais d’autres appli comme Oracle commencent par se mettre la RAM sous le coude ou ne la libère que quand il n’y en a plus… bref, plus on en met et plus ca en consomme. De belles économies en perspective et un meilleurs partages des ressources pour les applications plus eco-citoyennes en quelque sorte.

Par aileurs, cette analyse ne tiens pas vraiment compte de la façon dont le système gère son cache. Hors pour ce qui est de linux, la mise en swap se fait par page mémoire (de l’ordre de 4K) On peut donc imaginer qu’une partie de la mémoire de la JVM, les objets non référencés mais pas encore libérés, va rapidement être mise en swap ; si necessaire et sans domage pour les performances. Alors, pourquoi ne pas libérer la mémoire de la JVM plus tot ? (on en revient à la formule initiale !). Autre impact : le risque de swapper des objets toujours référencés mais peu utilisés ce qui augmentera les temps de réponse sur ces objets. Je reste donc sur ma formule précédente.

Pour finir par un lien avec l’article précédent, Xms ne doit pas être trop grand sans quoi le garbage collector ne passera que rarement et la consommation mémoire “de croisière” pourrait être plus forte que nécessaire ; toutefois c’est à moindre mal.

Controler la vitesse des ventilateurs d’une carte mère

Sur les dernières cartes mère, il est possible de contrôler via soft la vitesse des ventilateurs (fan-control). Cette fonctionnalité permer de jouer sensiblement sur le bruit de la machine.

Sur les carte MSI KT8 (utilisant un chip NForce 3 équipée d’un chip w83627thf) il est possible de controler la vitesse des ventilateurs au travers du périphérique associé dans /sys (pour peu que vous soyez bien en noyau 2.6)

La commande suivante permet celà :
echo $valeur > /sys/bus/i2c/devices/2-0290/pwm1
$valeur est un nombre entre 0 et 240. 0 étant l’arret complet du ventilateur. pwm1 correpond au premier ventilateur. La carte peut en gérer 3 qui seront alors pwm1, pwm2 et pwm3.