web-dev-qa-db-fra.com

Gestion de la mémoire dans Xen

Je comprends que xen alloue tous les besoins en mémoire physique de l'invité au démarrage. De plus, il maintient une table de pages d'observation (je suppose qu'il utilise struct page_info pour maintenir cela. Suis-je correct? Sinon, quelqu'un peut-il expliquer?) Auquel je souhaite accéder parce que je dois parcourir cette liste en vérifiant si l'invité auquel cela la page qui lui est affectée y a au moins accédé une fois.

Quelqu'un peut-il m'expliquer comment je peux y parvenir?

2
Ravi Vooda

Ravi,

Pour répondre à votre question, je suppose que vous souhaitez modifier le code source de l'hyperviseur et que vous êtes un codeur de noyau Linux expérimenté. Si vous n'avez pas d'expérience avec le codage du noyau, vous devriez probablement d'abord essayer un projet de codage du noyau plus simple pour acquérir de l'expérience. Expliquer comment modifier le code de la mémoire fantôme Xen dépasse le cadre d'AskUbuntu. La réponse ne correspondra certainement pas à l'une de ces réponses. Ce que vous voulez faire est très compliqué.

Tout d'abord, struct page_info n'est pas une liste. Il s'agit d'un type de données abstrait de bloc de construction utilisé dans plusieurs listes de l'hyperviseur Xen. Veuillez donc nous indiquer la liste que vous consultez qui utilise page_info.

Comme vous l'avez déjà vu, il y a un compte de référence dans une structure page_info, mais il ne peut pas être utilisé pour faire directement ce que vous voulez, AFAIK. Le _domaine du pointeur arrière que vous voyez dans le cadre de la structure page_info n'est défini que pour les pages qui ne sont pas utilisées comme pages masquées.

Xen peut être configuré pour faire ce que vous dites, allouer toute la mémoire au démarrage de l'invité, mais il peut également être configuré pour utiliser des bulles et allouer de la mémoire plus tard, à la fois vers le haut et vers le bas. Pour en savoir plus sur le pilote de ballon et ce type d'allocation de mémoire, consultez le wiki Xen sur http://wiki.xen.org/wiki/Main_Page .

Il existe également une fonction appelée mémoire transcendantale, appelée "tmem" dans la source. S'il est configuré pour utiliser tmem, Xen enlèvera de la mémoire à un invité qui ne l'utilise pas, pour la donner à un autre invité qui en a plus besoin. Il y a donc plus de travail si vous souhaitez modifier l'hyperviseur Xen pour suivre l'accès invité de toute la mémoire fantôme, fonctionnant dans tous les modes de gestion de mémoire possibles.

Si vous n'êtes pas en train de coder le noyau mais simplement de dépanner, vous pouvez connecter un terminal série au matériel qui exécute Xen (voir le wiki Xen pour savoir comment faire) pour voir l'utilisation de la mémoire. Une fois que le terminal série fonctionne correctement, vous pouvez non seulement parler à dom0 mais en appuyant 3 fois sur Ctrl-A, vous pouvez parler directement à l'hyperviseur. Appuyez sur "h" pour obtenir une liste d'aide des commandes.

Cordialement,

Segfaultreloaded

3
segfaultreloaded