cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
26 oct. 2005 à 19:17
abeloni
Messages postés2Date d'inscriptionmercredi 9 mars 2005StatutMembreDerniè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)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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/
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 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 !?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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/
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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é.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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....
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 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 !?
abeloni
Messages postés2Date d'inscriptionmercredi 9 mars 2005StatutMembreDerniè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!