OVH Cloud OVH Cloud

grep sur differents OS

5 réponses
Avatar
Adrien
Bonjour,

J'ai récemment installé l'outil grep sous windows (2000), et j'ai été
vraiment surpris qu'il allait beaucoup plus vite sous windows que sous
linux. A titre indicatif, j'ai un fichier de 300 Mo contenant des séquences
génétiques. La commande grep prend 30 à 40 secondes sous linux et 6
secondes maxi sous windows (même machine).

J'aimerais savoir ce qui se cache derrière tout ça. Est-ce une histoire de
vitesse de lecture de disque dur, de gestion des processus, ou autre
chose ?

Il y a-t-il un moyen d'accélérer un peu ce programme sous linux (en
changeant de système de fichiers par exemple) ?

Merci


PS: désolé si ne post est hors charte. Je n'ai pas vraiment trouvé de groupe
approprié.

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

5 réponses

Avatar
Jean-Max Reymond
Adrien wrote:
Bonjour,

J'ai récemment installé l'outil grep sous windows (2000), et j'ai été
vraiment surpris qu'il allait beaucoup plus vite sous windows que sous
linux. A titre indicatif, j'ai un fichier de 300 Mo contenant des séquences
génétiques. La commande grep prend 30 à 40 secondes sous linux et 6
secondes maxi sous windows (même machine).

J'aimerais savoir ce qui se cache derrière tout ça. Est-ce une histoire de
vitesse de lecture de disque dur, de gestion des processus, ou autre
chose ?



est-ce que c'est sur la même machine en dual boot?
Si ce n'est pas le cas, la taille de la mémoire influe énormément.


--
Jean-Max Reymond
dernière éruption de l'Etna: http://jmreymond.free.fr/Etna2002

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
TiChou
Dans l'article news:3f5e0eb1$0$27571$,
Adrien écrivait :

Bonjour,



Bonjour,

J'ai récemment installé l'outil grep sous windows (2000), et j'ai été
vraiment surpris qu'il allait beaucoup plus vite sous windows que sous
linux. A titre indicatif, j'ai un fichier de 300 Mo contenant des
séquences génétiques. La commande grep prend 30 à 40 secondes sous
linux et 6 secondes maxi sous windows (même machine).



Qu'elle est la source de votre commande grep sous Windows ? Est-ce le GNU
grep qui a été porté sur cet OS ?

De l'expérience que j'ai, ce type de commandes c'est toujours montré plus
veloce sous Linux (ou Unix like en général) que sous Windows.

Un test que je viens d'effectuer sur deux machines différentes avec le même
fichier de 240Mo :

- un serveur Linux, CPU P3 1GHz, SDRAM 512Mo, HD Seagate 20Go UDMA66 formaté
en ext3 :

:...erver/samba/Incoming# uname -s -r
Linux 2.4.21-grsec1.9.11+usagi20030805+acl0.8.60+tichou1
:...erver/samba/Incoming# ls -l test.log
-rw-r--r-- 1 nobody nogroup 241920519 Nov 14 2002 test.log
:...erver/samba/Incoming# time grep -c ouest test.log
1227720

real 0m2.258s
user 0m1.090s
sys 0m0.660s
:...erver/samba/Incoming# time grep ouest test.log > result

real 0m5.198s
user 0m1.660s
sys 0m1.620s


- une station de travail Windows XP Pro, CPU Athlon 1.4GHz, DDRAM 256Mo, 2
HD IBM 80Go monté en raid0 hardware formaté en NTFS :

:~/logs > uname -s -r
CYGWIN_NT-5.1 1.5.4(0.94/3/2)
:~/logs > ls -l test.log
-rwx------+ 1 Laetitia Aucun 241920519 Nov 14 2002 test.log
:~/logs > time grep -c ouest test.log
1227720

real 0m11.523s
user 0m0.811s
sys 0m0.771s
:~/logs > time grep ouest test.log > result

real 0m32.016s
user 0m1.432s
sys 0m1.932s

J'aimerais savoir ce qui se cache derrière tout ça. Est-ce une
histoire de vitesse de lecture de disque dur, de gestion des
processus, ou autre
chose ?



Je pense fortement à un problème de vitesse de lecture sur le disque dur.
A moins que sur votre Linux tournent des processus gourmands avec une
priorité supérieure, mais je suppose que lors de vos tests il n'en était
rien.

Il y a-t-il un moyen d'accélérer un peu ce programme sous linux (en
changeant de système de fichiers par exemple) ?



Quel est votre système de fichier ? ext2/3 ? reiserfs ? En tout cas ces
systèmes de fichiers ont fait leur preuve et ne souffrent pas de problème de
vitesse comparé aux systèmes de fichiers FAT et NTFS.
Le problème ne se situe certainement pas là en tout cas.

Le problème se situe certainement au niveau hardware.
Mauvais contrôleur de disque dur, UDMA pas activé (HD IDE au fait ?), etc.
Vérifiez que le contrôleur de votre disque dur est bien supporté dans votre
kernel et n'utilise pas un contrôleur trop générique.
Vérifiez avec l'outil hdparm (man hdparm) que votre disque dur est bien
paramétré (32bit, udma).

--
TiChou

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Frederic Saincy
Bonjour,

Adrien writes:

Bonjour,
La commande grep prend 30 à 40 secondes sous linux et 6
secondes maxi sous windows (même machine).



Ce qui devrait être identique:

- ligne de commande en entrée
- fichier d'entrée
- resultat en sortie
- version de grep
- le tout est sur le meme disque (os, fichier in fichier out...)

Difference qui pourraient expliquer certaines chose:

- charge sur les machines ?

Problemes possibles (qui peuvent se cumuler):

- un cafouillage dma/irq (parametres à passer au noyau)
- version du noyau (gestion des i/o, driver pour l'ide/scsi, smp
mieux supporté en 2.4 que'en 2.2)
- la localisation physique des fichiers (debut/fin de disque)
- la fragmentation des fichiers
- des histoires de block-size differents.
- ...

Bref,

- mettre son système à jour si ce n'est pas le cas.
- avoir des configurations proches (tout sur le meme disque par ex)
- isoler le problème s'il y en a toujours un.

Pour cette dernière chose, je commencerais par arreter tous les
services inutiles sur le linux et rediriger la sortie du grep vers
/dev/null (meme pas de sortie écran).


A bientôt.
--
Frederic Saincy

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Olivier Macchioni
On 18 Sep 2003 07:43:18 GMT, Adrien
wrote:

Bonjour,

J'ai récemment installé l'outil grep sous windows (2000), et j'ai été
vraiment surpris qu'il allait beaucoup plus vite sous windows que sous
linux. A titre indicatif, j'ai un fichier de 300 Mo contenant des séquences
génétiques. La commande grep prend 30 à 40 secondes sous linux et 6
secondes maxi sous windows (même machine).

J'aimerais savoir ce qui se cache derrière tout ça. Est-ce une histoire de
vitesse de lecture de disque dur, de gestion des processus, ou autre
chose ?



mmm... ou que les deux grep font pas exactement la même chose ?

Le grep GNU est considéré comme un des plus rapides, et une telle
différence est surprenante. Peut-être que le grep Windows est moins
riche en fonctionnalités que le grep Linux, et que c'est pour ça qu'il
va plus vite ?

Tu as essayé avec le fgrep de Linux ? Il ne connait pas les
expressions régulières, mais devrait être beaucoup plus rapide.

Tu peux tester egrep aussi.

Liens :
http://www.linuxjournal.com/article.php?sid#84


... ou alors tu peux tout revoir :

- trier le fichier ? (et utiliser look par exemple)
- le mettre en base de données et indexer les colonnes ?

Difficile de te conseiller plus sans connaitre la structure du fichier
et le type de requêtes, mais à titre d'infos, un recherche dans MySQL,
sur 1.5 millions d'enregistrements indexés, du type " WHERE machin
LIKE 'toto%'", sur une machine type Intel 2 GHz classique, prend
*largement* moins d'une seconde.

Si ton fichier ne change pas trop souvent, si tu n'utilises pas de
regexp compliquées dans tes requêtes, je te conseillerai largement de
le convertir en base de données et de travailler sur la DB... Mais
bon, YMMV.

Olivier

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Dominique ROUSSEAU
Dans l'article <3f5e0eb1$0$27571$, Adrien a écrit :
Bonjour,

J'ai récemment installé l'outil grep sous windows (2000), et j'ai été
vraiment surpris qu'il allait beaucoup plus vite sous windows que sous
linux. A titre indicatif, j'ai un fichier de 300 Mo contenant des séquences
génétiques. La commande grep prend 30 à 40 secondes sous linux et 6
secondes maxi sous windows (même machine).



Tu accèdes le même fichier ? (depuis le meêm emplacement)

Si, oui, je suppose qu'il se trouve sur une partition FAT32, or, le
support FAT32 de Linux est loin d'être des plus performants.

Sinon, si sous Linux tu l'accèdes depuis une partition «native», il est
possible que ce soit une différence d'accès (U)DMA ou de ce genre.
Voir du coté de hdparm.


Dom

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.