# [DMA] trouble de DMA =  Linux ralentit (résolu)

## SpikeXtrem

Bonjour,

je semble avoir un probleme avec linux. J'allucine p-e mais l'idée que j'me faisait de linux c sa fiabilité et son efficacité. J'ai malheureusement constaté qu'à la moindre tache lourde (decompression de gzip, compilation dun code source) mon ordi ralenti en terme de réaction. La lecture des mp3 par xmms est saccadée, firefox réagit au ralentit, meme que le curseur de ma souris ne répond pas tjs bien!

J'ai tout de meme une bonne machine : AthlonXP 2000+, 512 megs de ram DDR 333 mhz, geforce ti 4200 128 megs... jai un swapfile de 512 megs que je n'est jamais vue utilisée (est-ce normal) et ma ram n'est jamais pleine...

Ce genre de probleme n'arrive jamais sous windows XP. Est-ce une quesiton de configuration, de priorité de programmes? Aidez-moi svp!Last edited by SpikeXtrem on Mon Nov 22, 2004 2:29 am; edited 3 times in total

----------

## kedalel

hdparm est activé?

en root

```
/etc/init.d/hdparm start
```

et pour le lancement a chaque démarage (tj en root)

```
rc-update add hdparm default
```

----------

## [vector]

Sur mon 300Mhz sans hdparm, je peux lancer deux emerge, le PC reste utilisable.

----------

## SpikeXtrem

Le probleme se situe p-e effectivement là.

hdparm -d 1 /dev/hda

/dev/hda:

 setting using_dma to 1 (on)

 HDIO_SET_DMA failed: Operation not permitted

 using_dma    =  0 (off)

jutilise le kernel 2.4.26-r10

----------

## SpikeXtrem

si ca peut aider, voila

lspci -v

 *Quote:*   

> 0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333]
> 
>         Subsystem: VIA Technologies, Inc.: Unknown device 0000
> 
>         Flags: bus master, 66Mhz, medium devsel, latency 0
> ...

 

----------

## jbpros

Le DMA est activé dans ton bios?

----------

## nuts

moi les mp3 passe bien pendant une compillation. par contre

```
MAKEOPTS="-j4"
```

 fait que quand je compille, le cpu travaille comme un malade pour compiller (au moins 3 processus de compilation). donc firefox ralenti etc... mais c est normal car comme je viens de le dire le cpu bosse comme un fou.

apres pour le probleme de notre ami avec hdparm, ca semble qu il ait oublier de mettre son chipset dans le noyau.

----------

## scout

 *SpikeXtrem wrote:*   

> HDIO_SET_DMA failed: Operation not permitted

 

Pour que ça marche il faut que tu compiles dans le noyau le support pour ta carte mère

c'est dans:

```
Device Drivers  --->

    ATA/ATAPI/MFM/RLL support  --->

         VIA82CXXX chipset support
```

(enfin d'après ton lsci t'as une carte mère via ...)

----------

## scout

 *nuts wrote:*   

> 
> 
> ```
> MAKEOPTS="-j4"
> ```
> ...

 

Moi j'ai mis

```
PORTAGE_NICENESS="15"
```

Dans /etc/make.conf et emerge est lançé en nice 15 ... donc emerge ou pas moi je ne sens rien  :Smile: 

----------

## nuts

je connais pas le niceness. par contre le makeopts, tres pratique quand on a plusieurs cpu, meme en reseau, et quand on a un seul cpu, l option que j ai mise permet de compiller plus vite  :Wink: 

----------

## bosozoku

 *scout wrote:*   

> 
> 
> Moi j'ai mis
> 
> ```
> ...

 

C'est quoi nice 15 ? Je comprend pas très bien.

----------

## nuts

c est peut etre pour te laisser 15% de cpu tranquil pour faire autre chose

----------

## SpikeXtrem

si jajoute mon chipset via a mon kernel, dois-je le faire sous forme de module ou non?

----------

## bosozoku

Le mettre en dur est l'idéal ! 

L'interêt d'un module est de pouvoir le décharger si tu n'en à pas besoin, la le support de ce chipset, tu vas en avoir besoin tout le temps. Donc en dur.

----------

## jbpros

le paramètre nice d'un process influence sa priorité concernant l'utilisation du CPU. plus le nice est heaut, moins le processus est prioritaire par rapport aux autres. En plaçant portage à un haut niveau de "niceness", il n'utilise que les ressources "en trop" du système (cpu).

----------

## nuts

moi je l ai mis en dur et ca marche tres bien

----------

## bosozoku

Ah oué mais la les compilations de scoot doivent être assez lentes... ^^

----------

## SpikeXtrem

jai ajouté mon chipset et tjs rien...   :Confused: 

 *Quote:*   

> 
> 
> /dev/hda:
> 
>  setting using_dma to 1 (on)
> ...

 

----------

## jbpros

forcément, ça ralentit le bidule  :Smile:  mais selon les besoins et les ressources dispos, c'est une excellente idée que de diminuer la priorité (enfin d'augmenter sa "niceness")

----------

## scout

 *bosozoku wrote:*   

> Ah oué mais la les compilations de scoot doivent être assez lentes... ^^

 

Techniquement ça prends exactement la même durée: admettons que tu démarres firefox et que tu te mettes à surfer pendant ton emerge, eh bien grace au nice 15 de emerge, firefox aura la priorité et va démarrer plus vite, mais globalement 1 seconde de temps processeur reste 1 seconde de temps processeur.

L'action de emerger et démarrer firefox ça bouffe un certain temps proc, le fait d'allouer le temps proc plus difficilement à emerge ne change rien au temps total.

----------

## jbpros

```
<*> ATA/ATAPI/MFM/RLL support

<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

[*]     PCI IDE chipset support

[*]       Generic PCI bus-master DMA support
```

 *Quote:*   

> If your PCI system uses IDE drive(s) (as opposed to SCSI, say) and                                                                                                     is capable of bus-master DMA operation (most Pentium PCI systems),                                                                                                     you will want to say Y here to reduce CPU overhead. You can then use                                                                                          the "hdparm" utility to enable DMA for drives for which it was not enabled automatically.

 

 :Smile: 

----------

## jbpros

 *scout wrote:*   

>  *bosozoku wrote:*   Ah oué mais la les compilations de scoot doivent être assez lentes... ^^ 
> 
> Techniquement ça prends exactement la même durée: admettons que tu démarres firefox et que tu te mettes à surfer pendant ton emerge, eh bien grace au nice 15 de emerge, firefox aura la priorité et va démarrer plus vite, mais globalement 1 seconde de temps processeur reste 1 seconde de temps processeur.
> 
> L'action de emerger et démarrer firefox ça bouffe un certain temps proc, le fait d'allouer le temps proc plus difficilement à emerge ne change rien au temps total.

 

si pendant une seconde 50% du tps cpu est alloué à firefox, emerge perd donc 50%, ce qui revient à dire que seulement 1/2seconde de calcul a été allouée à emerge. Il faudra donc 2secondes réelles pour allouer 1s cpu à emerge.. donc ça ralentit bien le travail d'emerge (en termes de temps réel). par contre le temps total ne varie pas.

si j'ai faux j'ai rien compris  :Very Happy: 

----------

## SpikeXtrem

je crois que le probleme de lenteur se situe davantage dans mon dma que dans la priorité des programmes car meme un emerge seul est très lent. Bien sur, ca ralenti tout le reste quand jen exécute un. Mais une compilation ne devrait pas etre si lente, du moins de ce que me dit mon expérience. 

J'ai compilé mon noyau avec le support de mon chipset et je n'arrive tjs pas a activer le dma. Il est actif dans mon bios puisqu'en windows il fonctionne a merveille.

et pourquoi apres chaque recompilation de noyau je perd mon réseau et ma carte de son?? c assez irritant

----------

## scout

 *jbpros wrote:*   

> si j'ai faux j'ai rien compris 

 

Désolé mais t'as rien compris ...

Bon on va prendre des chiffres entiers:

emerge il a besoin de 60 secondes cpu et firefox il a besoin d'une seconde cpu pour démarrer

donc pour faire les deux faut 61 secondes quelque soit l'orde dans lequel c'est effectué ... t'es pas convaincu ???

Bon alors:

admettons qu'on ai déja lançé emerge (depuis 10 secondes par exemple)

1er cas: pas de changement de nice

à la seconde 10 on lance firefox

pendant 2 secondes firefox et emerge sont en parallele. pendant ces deux secondes firefox a eu le droit à 1 seconde cpu et emerge à 1 seconde cpu

Je récapitule: on est à 12 sec réel, 1 sec cpu pour firefox et 11 sec cpu pour emerge

il reste 60-11=49 sec cpu pour que emerge se finisse, donc ça se termine à 12+49=61 secondes en tout

2eme cas: firefox est infiniment plus prioritaire que emerge

à la seconde 10 on lance firefox

pendant 1 seconde firefox est executé

on est à la seconde réele 11 et emerge n'a eu le droit qu'a 10 sec cpu il lui faut encore ses 50 secondes restantes pour finir

donc ça se finit à la seconde réele 11+50=61

Bon dit autrement, si firefox est prioritaire par rapport à emerge il emmerde plus emerge, mais il l'emmerde moins longtemps

Faut s'imaginer à la place du noyau: si tu dois choisir 1000 fois par secondes à qui donner du temps processeur, tu va prendre en compte le nice pour choisir, mais au final t'aura donné tes 61*1000 unités peu importe à qui tu les donnes ou dans quel ordre.

[EDIT] On me dit dans l'oreillette que ce n'est pas toujours vrai ... effectivement ce raisonnement est faux si la tache à effectuer pendant le emerge se finit après le emerge.

----------

## scout

 *SpikeXtrem wrote:*   

> je crois que le probleme de lenteur se situe davantage dans mon dma que dans la priorité des programmes car meme un emerge seul est très lent. Bien sur, ca ralenti tout le reste quand jen exécute un. Mais une compilation ne devrait pas etre si lente, du moins de ce que me dit mon expérience. 

 

oui je suis d'accord avec toi, on est parti sur un autre sujet avec le nice, pardon  :Embarassed: 

 *SpikeXtrem wrote:*   

> J'ai compilé mon noyau avec le support de mon chipset et je n'arrive tjs pas a activer le dma. Il est actif dans mon bios puisqu'en windows il fonctionne a merveille.

 

Je suppose qu'il doit manquer des trucs dans ta config de noyau ...

poste nous la section qui va bien (genre tu colles ici le contenu de ton fichier .config qui se situe apres "# ATA/ATAPI/MFM/RLL support" et avant "# SCSI device support")

 *SpikeXtrem wrote:*   

> et pourquoi apres chaque recompilation de noyau je perd mon réseau et ma carte de son?? c assez irritant

 

comment ça ?

----------

## razer

 *SpikeXtrem wrote:*   

> je crois que le probleme de lenteur se situe davantage dans mon dma que dans la priorité des programmes 

 

Exactement : sans DMA, n'importe quelle machine rame... sauf il est en scsi ou serial ATA

----------

## Trevoke

Je fais un petit resume OFF-TOPIC..

Quand tu fais ton top

 *Quote:*   

> top - 13:30:36 up 21:18,  4 users,  load average: 3.68, 3.47, 3.63
> 
> Tasks: 115 total,   4 running, 111 sleeping,   0 stopped,   0 zombie
> 
> Cpu(s): 62.7% us, 16.6% sy,  2.0% ni, 12.1% id,  4.1% wa,  0.2% hi,  2.3% si
> ...

 

tu as la colonne NI (pour NICE). Les utilisateurs normaux ne peuvent mettre NICE que entre 0 et 19. Root pour aller jusqu'a -20.

Plus la valeur de NICE est petite, plus la commande est prioritaire, et donc plus elle aura de cycles a elle pendant une seconde.

Alors si Firefox met une seconde a se lancer et que Thunderbird en met5 avec NICE 0, si tu mets Firefox en 19 et Thunderbird en -5, Thunderbird se lancera avant que j'aie fini de taper ceci, et Firefox se lancera une fois que tout aura fini de tourner.

```
man nice
```

  :Smile: 

----------

## jbpros

 *scout wrote:*   

>  *jbpros wrote:*   si j'ai faux j'ai rien compris  
> 
> Désolé mais t'as rien compris ...
> 
> Bon on va prendre des chiffres entiers:
> ...

 

On s'est mal compris  :Smile:  J'ai également affirmé que le temps total était identique quel que soient les priorités utilisées. Par contre ce qu'on disait au départ dans ce thread c'est qu'emerge en nice plus élevé prendra plus de temps à se terminer si un autre process au nice plus bas existe (et il en existe). C'est l'utilité même du système nice.

Pour en revenir au pb de DMA: as-tu activé cette option dans ton noyau?

```
[*]       Generic PCI bus-master DMA support
```

Edit: orthographe  :Very Happy: 

----------

## SpikeXtrem

 *Quote:*   

> poste nous la section qui va bien (genre tu colles ici le contenu de ton fichier .config qui se situe apres "# ATA/ATAPI/MFM/RLL support" et avant "# SCSI device support") 

 

Désolé je suis un vrai de vrai noob et je sais pas de quel .conf il s'agit, vraiment désolé... 

Pour ce qui est de la perte du réseau et du son : Oui je doit reloadé mes moudles pour les 2 chaque fois que je reocmpile le noyau et que je redémarre... sinon ni l'un ni l'autre ne fonctionne!

----------

## Trevoke

essaye

```
emerge hotplug coldplug

rc-update add coldplug boot

rc-update add hotplug default
```

----------

## kernelsensei

@SpikeXtrem: Bienvenue sur le forum ...

@ALL: C'est dingue, je m'absente 2H pour faire mes exos de maths et pis voila, je reviens, je vois un titre non conforme, et pas UN n'a fait un rappel a l'ordre !!

pff c'est decadent tout ca !!!   :Razz: 

Bon, comme personne ne l'a fait :

@SpikeXtrem:

[IMPORTANT] Comment se servir du forum !!

Merci !

----------

## SpikeXtrem

Je répond a jbpros  :  oui cette option a été activée dans mon kernel, je l'ai recompilé et rebooté.... toujours rien...

Trevoke : jai fait un emerge coldplug hot plug ainsi que les rc-update.

J'ai constaté que hdparm était bel et bien loadé durant mon boot... mais qu'avec la commande

```
hdparm -d 1 /dev/hda
```

j'ai toujours la même erreur!   :Shocked: 

----------

## Gaug

Pour le .config c'est le /usr/src/linux/.config    :Wink: 

As-tu un kernel 2.2.26-r10 comme écrit dans ta signature

un kernel 2.4 ou 2.6 sa vas mieux

----------

## kernelsensei

dans la config kernel, t'as mis

```
[*]         Use PCI DMA by default when available
```

  :Question: 

autrement, moi j'ai ca !

```
<*>     generic/default IDE chipset support

[*]     CMD640 chipset bugfix/support

[*]     PCI IDE chipset support

[*]       Sharing PCI IDE interrupts support

<*>       Generic PCI IDE Chipset Support

[*]       Generic PCI bus-master DMA support

[*]         Use PCI DMA by default when available

<*>         Intel PIIXn chipsets support  // <--MON CHIP

```

Il est clair que si t'as un kernel 2.2.26 .... c'est pas dit qu'il y ait les derniers pilotes DMA !

----------

## SpikeXtrem

 *Gaug wrote:*   

> 
> 
> As-tu un kernel 2.2.26-r10 comme écrit dans ta signature
> 
> un kernel 2.4 ou 2.6 sa vas mieux

 

Ouaip jai effectivement 2.4.26  :Razz:  merci pour la correction!

voila mon .config

 *Quote:*   

> 
> 
> CONFIG_IDE=y
> 
> #
> ...

 

Je savais pas que ca existait... mais faut bien s'y mettre un jour!

J'sais pas si c ca mais ya la ligne : CONFIG_IDEDMA_PCI_AUTO=y

----------

## SpikeXtrem

Voici ma page de config de kernel qui attrait a mon hd

 *Quote:*   

> 
> 
> <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support                                   │ │
> 
> --- Please see Documentation/ide.txt for help/info on IDE drives                          
> ...

 

----------

## kernelsensei

vire ca 

```
<*> RZ1000 chipset bugfix/support │ │ 
```

et bon, 

```
<M> AMD and nVidia IDE support │ │
```

  ne fait pas de mal vu qu'il est en module, mais a priori il ne sert a rien !

----------

## jbpros

CONFIG_IDEDMA_PCI_AUTO=y ne sert qu'à activer le DMA automatiquement au boot. Perso je préfère utiliser /etc/init.d/hdparm avec toutes les options des disques activées en même temps, le boot est probablement légèrement plus lent (?) sans le DMA activé par le kernel avant le chargement de hdparm.

Quoi qu'il en soit cette option ne permet pas plus ou moins d'activer le DMA.

Pourrais-tu nous donner la sortie de la commande suivante?

```
hdparm -iIv /dev/hda
```

Edit: tant qu'on y est, ça donne quoi l'activation dma sur ton lecteur CD/DVD/graveur?

----------

## _droop_

Lu,

Moi perso, je vire ca:

```
[*] Generic PCI IDE Chipset Support
```

Vu que dans la suite de la config tu dis exactement quel chip tu as.

Je suis pas sur que ca va aider pour les dma, mais ca peut pas faire de mal

----------

## razer

Oui, oui... mais sauf erreur de ma part, avec sa conf de noyau le DMA devrait fonctionner : le soucis est ailleurs...

Normalement linux passe par dessus les paramètres du BIOS pour l'ide, mais vérifies quand même que tes IDE sont configurés en AUTO partout dans le Bios

donne nous ensuite la sortie de "dmesg" concernant tes IDE

----------

## kernelsensei

 *razer wrote:*   

> Oui, oui... mais sauf erreur de ma part, avec sa conf de noyau le DMA devrait fonctionner : le soucis est ailleurs...
> 
> Normalement linux passe par dessus les paramètres du BIOS pour l'ide, mais vérifies quand même que tes IDE sont configurés en AUTO partout dans le Bios
> 
> donne nous ensuite la sortie de "dmesg" concernant tes IDE

 

Ben moi je vois qu'il a 2 drivers differents en dur, ce qui pourrait foutre la merde !

----------

## SpikeXtrem

 *jbpros wrote:*   

> 
> 
> Pourrais-tu nous donner la sortie de la commande suivante?
> 
> ```
> ...

 

Voila la sortie

 *Quote:*   

> 
> 
> hdparm -iIv /dev/hda
> 
> /dev/hda:
> ...

 

[/code]

----------

## razer

 *kernel_sensei wrote:*   

> 
> 
> Ben moi je vois qu'il a 2 drivers differents en dur, ce qui pourrait foutre la merde !

 

C'est quand même étonnant : j'ai compilé des kernels "génériques" (pour un système serveur installable sur n'importe quelle machine), je mettais en dur les différents chipsets IDE les plus répandus + le générique ide : j'ai jamais eu de pb, le noyau charge le code correspondant au chipset...

Mais enfin, on ne sait jamais...

----------

## jbpros

```
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
```

L'udma6 (133) semble être activé... j'avoue ne pas bien comprendre.

Peux-tu modifier d'autres paramètres du disque via hdparm?

----------

## dapsaille

Salut à vous. ..

J'ai eu le meme soucis sur une 2.6.9-gentoo-r1 ..

memes symptomes et memes bizarrerries dans le config du kernel ...

J'ai donc recompile en desactivant tout ce qui as attrait au dma au niveau du chipest ide SAUF celle concernant DIRECTEMENT mon materiel et au reboot hallelouyaaaaaa :p

 Voila donc reteste en desactivant les options superflues ..

 NOTA= j'ai deja compile des noyaux "lourds" avec tout integres en dur et pourtant cela fonctionait donc la je suis etonne mais bon ca marches :p

----------

## SpikeXtrem

Bon j'ai finalement updaté ma gentoo a un noyau 2.6.9 et le support du dma est magiquement embarqué. J'avais des problemes avec mes périphériques usb avec la 2.4, tout marche en 2.6...  Conclusion : kernel 2.6 c'est tout ce qu'il me faut!

merci a tous ceux qui ont voulu aider!

----------

## jbpros

Je viens de lire dans un post anglais ( https://forums.gentoo.org/viewtopic.php?t=252608&highlight=ide3+irq ) que ce problème semble également se produire sur les kernels 2.6.9-r1, r2 (?) et r3 mais que la r4 corrigeait ce défaut. Tout cela est bien étrange   :Smile: 

----------

