Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Swapping

8 réponses
Avatar
ChP
Bonjour à toutes et à tous,

Existe-t-il un moyen (une instruction, une API, ...) qui permet de
savoir si mon programme va entrer ou sortir d'une phase de swapping avec
le disque dur ?

Merci de votre aide.

Pierre

8 réponses

Avatar
Sylvain
ChP wrote on 05/10/2006 00:10:
Bonjour à toutes et à tous,

Existe-t-il un moyen (une instruction, une API, ...) qui permet de
savoir si mon programme va entrer ou sortir d'une phase de swapping avec
le disque dur ?



une API utilisée par un soft pour pouvoir s'il est en cache disque et
donc non en cours d'exécution (y compris de cette API), c'est bien cela?

je ne crois pas que cela n'existe, ni que cela servirait - s'il a été
swappé c'est qu'il ne sert pas / n'est pas utilisé.

une autre question, ayant plus d'incidence applicative, serait est-ce
que mes données (que l'on suppose très larges) sont ou non swappées,
certains choix sur leur traitement pourraient en être influés.

Sylvain.
Avatar
ChP
Sylvain a écrit :
ChP wrote on 05/10/2006 00:10:
Bonjour à toutes et à tous,

Existe-t-il un moyen (une instruction, une API, ...) qui permet de
savoir si mon programme va entrer ou sortir d'une phase de swapping
avec le disque dur ?



une API utilisée par un soft pour pouvoir s'il est en cache disque et
donc non en cours d'exécution (y compris de cette API), c'est bien cela?

je ne crois pas que cela n'existe, ni que cela servirait - s'il a été
swappé c'est qu'il ne sert pas / n'est pas utilisé.

une autre question, ayant plus d'incidence applicative, serait est-ce
que mes données (que l'on suppose très larges) sont ou non swappées,
certains choix sur leur traitement pourraient en être influés.



c'est bien des données dont je parle, pas du programme lui même.

Sylvain.


Avatar
Sylvain
ChP wrote on 05/10/2006 08:25:

une autre question, ayant plus d'incidence applicative, serait est-ce
que mes données (que l'on suppose très larges) sont ou non swappées,
certains choix sur leur traitement pourraient en être influés.



c'est bien des données dont je parle, pas du programme lui même.



la gestion de la mémoire étant supposée transparente, je ne crois pas
qu'une fonction d'interrogation directe existe (pour ce status in RAM vs
in cache), cependant le memory manager propose des API telle
VirtualAlloc qui permet d'obtenir un bloc qui ne sera pas swappé, cela
peut répondre à une partie de la question en l'évitant; les API AWE
(Address Windowing Extensions) permettent également d'éviter le swapping
- voir les récents posts d'Arnold pour des explications sur le
fonctionnement de ma mémoire.

Sylvain.
Avatar
ChP
Sylvain a écrit :
ChP wrote on 05/10/2006 08:25:

une autre question, ayant plus d'incidence applicative, serait est-ce
que mes données (que l'on suppose très larges) sont ou non swappées,
certains choix sur leur traitement pourraient en être influés.



c'est bien des données dont je parle, pas du programme lui même.



la gestion de la mémoire étant supposée transparente, je ne crois pas
qu'une fonction d'interrogation directe existe (pour ce status in RAM vs
in cache), cependant le memory manager propose des API telle
VirtualAlloc qui permet d'obtenir un bloc qui ne sera pas swappé, cela
peut répondre à une partie de la question en l'évitant; les API AWE
(Address Windowing Extensions) permettent également d'éviter le swapping
- voir les récents posts d'Arnold pour des explications sur le
fonctionnement de ma mémoire.

Sylvain.


L'article de Arnold est très instructif, mais il conduit à la gestion de
la mémoire par Windows et qui est moult fois plus compliquée encore. Ce
n'est plus de mon niveau.

En ce qui me concerne, j'ai réalisé un programme (en DELPHI 6 mais je
peux y adjoindre des appels directs aux API) de gestion d'images qui
peuvent utiliser en mémoire plus d'un GB. Je ne suis absolument pas
maître de la gestion de la mémoire. Mon but serait simplement d'avertir
l'utilisateur lorsqu'il y a swapping pour qu'il ne se dise pas : "tiens,
c'est planté, ça n'avance plus !"

Merci de votre aide.

Pierre.
Avatar
Arnold McDonald \(AMcD\)
ChP wrote:

L'article de Arnold est très instructif, mais il conduit à la gestion
de la mémoire par Windows et qui est moult fois plus compliquée
encore.



Oui, je dois poster un de ces jours la suite, la gestion de la mémoire sous
Windows. Simplement, la dernière fois, il y en avait pour 21 Ko de
généralités traitées assez rapidement, c'est déjà long. Pour faire le même
truc sous Windows, ça serait au moins 3 ou 4 fois plus long (et encore, je
suis modeste). Faut que je trouve la motiv'...

--
Arnold McDonald (AMcD)

http://arnold.mcdonald.free.fr/
Avatar
ChP
Arnold McDonald (AMcD) a écrit :
ChP wrote:

L'article de Arnold est très instructif, mais il conduit à la gestion
de la mémoire par Windows et qui est moult fois plus compliquée
encore.



Oui, je dois poster un de ces jours la suite, la gestion de la mémoire sous
Windows. Simplement, la dernière fois, il y en avait pour 21 Ko de
généralités traitées assez rapidement, c'est déjà long. Pour faire le même
truc sous Windows, ça serait au moins 3 ou 4 fois plus long (et encore, je
suis modeste). Faut que je trouve la motiv'...



Je te comprends !

Pierre
Avatar
Sylvain
ChP wrote on 05/10/2006 13:13:

En ce qui me concerne, j'ai réalisé un programme (en DELPHI 6 mais je
peux y adjoindre des appels directs aux API) de gestion d'images qui
peuvent utiliser en mémoire plus d'un GB. Je ne suis absolument pas
maître de la gestion de la mémoire.



je vous confirme! tellement pas maitre que s'il existait une API
isInSwap vous ne pourrez certainement pas lui passer un pointeur Delphi
qui sort du memory manager Delphi.

le partie que vous pouvez maitriser est ce qui a vraiment besoin d'être
en RAM - si c'est du BMP 32 bits à 300 dpi et format A0, pas bcp de
choix, si par contre vous générez les images (ray tracing, vectoriel,
etc) vous pouvez travailler sur des rendus basse résolution et ne faire
le calcul haute déf. que sur demande.

Mon but serait simplement d'avertir l'utilisateur lorsqu'il
y a swapping pour qu'il ne se dise pas : "tiens, c'est planté,
ça n'avance plus !"



avertissez-le simplement en expliquant, documentant, que l'on ne traite
pas des images 1go avec 256/512mo de RAM mais plutôt avec 2go.
pour le reste mettez un sablier où une progress-bar infini, il verra
qu'il se passe qlq chose.

entre les 2 (définir le statut de chaque bloc mémoire et le simple
sablier) vous pouvez simplement comparer la taille des images à
ouvrir/créer et celle de la mémoire physique installée, vous alerterez
alors l'utilisateur du risque de lenteur si les images sont trop grosses
(par rapport à la mem. physique).

Sylvain.
Avatar
ChP
Sylvain a écrit :
ChP wrote on 05/10/2006 13:13:

En ce qui me concerne, j'ai réalisé un programme (en DELPHI 6 mais je
peux y adjoindre des appels directs aux API) de gestion d'images qui
peuvent utiliser en mémoire plus d'un GB. Je ne suis absolument pas
maître de la gestion de la mémoire.



je vous confirme! tellement pas maitre que s'il existait une API
isInSwap vous ne pourrez certainement pas lui passer un pointeur Delphi
qui sort du memory manager Delphi.

le partie que vous pouvez maitriser est ce qui a vraiment besoin d'être
en RAM - si c'est du BMP 32 bits à 300 dpi et format A0, pas bcp de
choix, si par contre vous générez les images (ray tracing, vectoriel,
etc) vous pouvez travailler sur des rendus basse résolution et ne faire
le calcul haute déf. que sur demande.

Mon but serait simplement d'avertir l'utilisateur lorsqu'il y a
swapping pour qu'il ne se dise pas : "tiens, c'est planté,
ça n'avance plus !"



avertissez-le simplement en expliquant, documentant, que l'on ne traite
pas des images 1go avec 256/512mo de RAM mais plutôt avec 2go.
pour le reste mettez un sablier où une progress-bar infini, il verra
qu'il se passe qlq chose.



Le sablier et le progressbar : c'est fait.

entre les 2 (définir le statut de chaque bloc mémoire et le simple
sablier) vous pouvez simplement comparer la taille des images à
ouvrir/créer et celle de la mémoire physique installée, vous alerterez
alors l'utilisateur du risque de lenteur si les images sont trop grosses
(par rapport à la mem. physique).

Sylvain.



Merci pour ces conseils.

Pierre