Comment désactiver un périphérique sous Linux Debian (Wheezy)

J’ai besoin de forcer le noyau à ne pas charger les pilotes de la carte réseau Intel de mon PC pour voir si cela aide à résoudre les problèmes de performance que j’ai en utilisant la deuxième carte réseau sur la même carte mère. Comment puis-je faire cela ?

Je viens d’installer Linux Debian Wheezy sur mon ordinateur de bureau car j’ai été très satisfait de Squeeze. J’ai cependant rencontré un problème où le noyau, après ce qui semble être un temps aléatoire, cesse de répondre à l’IRQ 16 et ralentit toute la machine au point de la rendre inutilisable.

Une recherche sur Google montre de nombreuses personnes de toutes sortes de distributions et de noyaux avec le même problème mais sans solution. J’ai vérifié /proc/interrupts et trouvé que ma carte graphique et ma carte réseau partagent le même IRQ et j’ai décidé de déplacer la carte graphique vers un autre emplacement, ce qui a beaucoup aidé. Cependant, le problème persiste, seulement maintenant il ne cause des problèmes qu’avec ma carte réseau Intel gigabit, lui faisant perdre en performances. Puisque j’ai deux cartes réseau sur cette machine/carte mère, je veux essayer de désactiver celle-ci et utiliser l’autre pour voir si cela résout le problème.

Comment puis-je faire cela ?

Voici quelques informations sur mon système qui pourraient être utiles.
J’ai retiré les informations qui ne sont pas importantes pour ce cas.

hamartin@Sabriel:~$ lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 05)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b5)
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b5)
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1c.6 PCI bridge: Intel Corporation 82801 PCI Bridge (rev b5)
00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation P67 Express Chipset Family LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)
02:00.0 VGA compatible controller: NVIDIA Corporation GF114 [GeForce GTX 560 Ti] (rev a1)
02:00.1 Audio device: NVIDIA Corporation GF114 HDMI Audio Controller (rev a1)
04:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
06:00.0 SATA controller: JMicron Technology Corp. JMB362 SATA Controller (rev 10)
07:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
08:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 01)
09:02.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet (rev 10)
0a:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9172 SATA 6Gb/s Controller (rev 11)

Notez qu’avant de déplacer la carte graphique, l’IRQ 16 n’était partagée qu’entre les pilotes eth0 et nouveau.

hamartin@Sabriel:~$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
16: 400001 0 0 0 0 0 0 0 IO-APIC-fasteoi eth0

Informations sur le noyau.

hamartin@Sabriel:~$ uname -a
Linux Sabriel 3.2.0-4-amd64 #1 SMP Debian 3.2.39-2 x86_64 GNU/Linux

Données de journal pertinentes de /var/log/messages. Ceci date d’avant que je change l’emplacement de la carte graphique.

Mar 25 01:22:50 Sabriel kernel: [ 4.137920] fb0: nouveaufb frame buffer device
Mar 25 01:22:50 Sabriel kernel: [ 4.137922] drm: registered panic notifier
Mar 25 01:22:50 Sabriel kernel: [ 4.137927] [drm] Initialized nouveau 1.0.0 20120316 for 0000:01:00.0 on minor 0
Mar 25 01:22:50 Sabriel kernel: [ 4.137966] hda_intel: Disabling MSI

Je ne trouve pas le message d’erreur qui a été affiché sur ma fenêtre de terminal, je soupçonne qu’il n’a pas été écrit dans les journaux. En substance, le message d’erreur indiquait qu’il avait cessé de répondre aux IRQ du périphérique configuré à 16.

Si des informations supplémentaires sont nécessaires, dites-le-moi et je les fournirai dès que je verrai qu’il y a une mise à jour ici. Merci d’avance de prendre le temps d’aider.

Vous pouvez mettre votre module en liste noire en suivant ces étapes :

  • Créez un fichier /etc/modprobe.d/<nom_du_module>.conf contenant blacklist <nom_du_module>

  • Exécutez depmod -ae en tant que root

  • Recréez votre initrd avec update-initramfs -u