Controle de la charge processeur d'une tache

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 26 oct. 2005 à 19:17
abeloni Messages postés 2 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 6 décembre 2005 - 6 déc. 2005 à 17:25
Bonjour
Pour une fois, c'est moi qui pose la question, lol

J'ai une application serveur de documentation et, en même temps que mon serveur tourne, j'ai besoin de faire des copies de fichier, de gros fichiers (~200 Mo).
La machine n'est pas récente et la copie de fichier la ralentit de trop.
Je cherche donc le moyen de faire cette copie en contrôlant la charge CPU maximum. Pour la copie, je ne suis pas pressé.

Il doit y avoir une astuce avec les threads, mais je demande si, à tout hasard, qqun aurait déjà fait ce genre d'app.

Merci

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)

11 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 oct. 2005 à 19:43
Jack qui pose une question, on aura tout vu ! lol



Alors le mieux, c'est de créer un nouveau thread pour faire la copie
(ainsi tu coupe pas l'éxécution de ton prog) et tu fixe la priorité du
thread avec l'API SetThreadPriority.

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 oct. 2005 à 20:35
A que merci, Mr DarkSirious !
Je m'oriente vers cette quète ... j'épluche quelques sources ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 20:49
Thread en VB c'est crash assuré, attention.

ciao...
BruNews, MVP VC++
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
26 oct. 2005 à 21:07
Salut jack,

Je ne connais pas ton environnement de travail mais j'ai eu à faire des boulots similaires (environnement windows 98, NT, XP, Unix, vb6, FTP, ....), genre sauvegarde et/ou mise à jour de bases de données, de contenus de serveurs, ... sur bande ou sur serveurs miroir (ou de sauvegarde)...

Pour les serveurs miroir, la meilleure technologie est encore la technologie RAID mais bon c'est loin du VB, assez cher et compliqué à mettre en place. On va oublier pour l'instant.

La solution des threads, je n'ai pas encore trop testé avec vb.net. En vb6 j'ai trouvé que ce n'est pas concluant. A partir du fait que c'est le même seul processeur qui doit gérer le tout, on en revient, à mon avis au DoEvents du VB6.

La solution retenue, dans les cas où j'ai eu à intervenir en environnement Microsoft Windows, à été de déterminer une plage horaire de moindre utilisation et de lancer (dans cette plage) des "batch" (en windows, des tâches automatiques) par programme (plus fiable) ou via le gestionnaire de tâches de windows.

Si ça peut t'être utile.....

S'il y a de meilleures solutions, je suis preneur aussi !

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 oct. 2005 à 21:09
Meuh non, pas assuré BruNews, faut pas éxagérer tout de même, disons que c'est risqué... lol


_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 oct. 2005 à 21:36
Et sinon, une idée qui me passe par la tête : si on passe par une dll
C, ou une dll ActiveX en thread cloisoné, qui se chargera de la copie
du fichier, ce sera sûrement plus stable qu'un thread lancé à partir
d'un exe VB, non ?



_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 22:15
Une dll travaille toujours dans l'espace mémoire de l'exe, vb ignorera toujours le thread et pourrait idem vouloir accéder à une zone occupée.
Faut prendre le principe de CanisLupus, soit batch ou soit lancer exe en C qui lui travaillera dans un espace mémoire séparé.

ciao...
BruNews, MVP VC++
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 oct. 2005 à 23:31
salut,
euh..... mais si le problème est que le PC, en plus d'être solicité, est à la traine, thread ou pas c'est pareil non?
faire ces traitements quand il y a moins de personnes qui accèdent au serveur, ok, mais la copie prendra par elle-même autant de ressources, quelle soit appelée d'un exe ou d'une dll d'exe :-$

puisque le temps de copie n'est pas un problème, ce qui me vient à l'esprit serait plus comme la découpe d'envoie de fichiers.
ou... comme DAP (WAN) ou SuperCopier (LAN~Local).
l'idée : tronconner tes fichiers par morceaux de ....5 ou 10Mo, et de les copier progressivement.
encore faut-il voir niveau espace de stockage, mais çà laisse sans doute plus de liberté pour étaler les sauvegardes globales ; et ressources aérées....

fin' moi j'dis çà

PCPT [AFCK]
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 oct. 2005 à 21:43
Oh la la, que de bonnes idées.


Dans ma tête : Quand je lance un vulgaire 'Copy' de mes gros fichiers, je souhaite que l'activité du PC lié à cette copy (faite par le système), ne prenne pas tout le temps machine afin de pouvoir laisser du temps à mon serveur de documentation.


Mon environnement : Windows NT sur une machine qui toune à 300 MHz (ne riez pas)


Merci de vos conseils.


Je sais que les Threads, lancés par l'IDE de VB6 risquent forts de cracher l'appli, j'en suis conscient.


L'idée de SuperCopier (que je ne connait pas) et celle de PCPT (découpage) est peut-être à étudier.


Je vous remercie de vos idées. J'ai le week-end pour détailler tout ça.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
27 oct. 2005 à 22:41
jack > une autre idée qui me passe par la tête : peux-tu disposer d'une autre machine que tu pourrais dédier à la copie ?
Ca pourrait soulager le serveur. Sachant quand même qu'il faudra recourrir à certaines astuces à base d'api pour pouvoir copier le ou les fichiers même s'ils sont en cours d'utilisation (mais ça, je pense que tu les connais).

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
abeloni Messages postés 2 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 6 décembre 2005
6 déc. 2005 à 17:25
Salut les amis,

Je suis nouveau dans le coin donc je vous prierai de m'excuser si j'ecrivais quelque chose fauchee!

Sinon j'ai un probleme terible avec les threads: tout simple je
voudrais savoir s'il y a un moyen d'acceder a la quantite de memoire
qu'utilise un thread parmi 50 d'un meme processus. Les counters de CLR
n'ont pas vraiment aide- mieux ceux de la classe WMI m'ont aide jusque
la a obtenir une bonne valeur du % CPU et KB de memoire pour le
processus. Vraiment URGENT!

Merci bien.

Abel
0
Rejoignez-nous