Je veux créer un ramdisk Linux de taille fixe qui ne permute jamais sur le disque. Notez que ma question n'est pas «pourquoi» je veux faire cela (disons, par exemple, que c'est à des fins éducatives ou pour la recherche): la question est de savoir comment le faire.
Si je comprends ramfs
bien, la taille ne peut pas être limitée, donc cela ne correspond pas à mon exigence d'avoir un disque virtuel de taille fixe.
Il semble également que tmpfs
peut être échangé sur le disque. Cela ne correspond donc pas à mon exigence de ne jamais permuter sur le disque.
Comment pouvez-vous créer un ramdisk Linux de taille fixe qui ne permute jamais sur le disque?
Est-il possible, par exemple, de créer à l' tmpfs
intérieur d'un ramfs
(une telle solution répondrait-elle à mes exigences) et si oui, comment?
Notez que les performances ne sont pas un problème et que le ramdisk se remplit et déclenche des erreurs "disque plein" n'est pas un problème non plus.
la source
ram
appareilsdev
. Sinon, essayezmodprobe rd
.Réponses:
Ce n'est qu'une idée et a plus d'un inconvénient, mais il pourrait être suffisamment utilisable de toute façon.
Que diriez-vous de créer un fichier image et un système de fichiers à l'intérieur au-dessus de ramfs, puis de monter l'image en tant que périphérique de boucle? De cette façon, vous pouvez limiter la taille du disque virtuel en limitant simplement la taille du fichier image. Par exemple:
Dans l'exemple (un peu trop long) ci-dessus, le fichier image est créé pour être de 2 mégaoctets et lorsque vous essayez d'écrire plus de 2 mégaoctets dessus, l'écriture échoue simplement car le système de fichiers est plein.
Une réduction évidente de tout cela est bien sûr qu'il y a beaucoup plus de complexité, mais au moins à des fins académiques cela devrait suffire.
la source
Le livre (daté!) "Linux Device Drivers" de Corbet, Rubini et Kroah-Hartman a un exemple de pilote qui alloue juste une zone de mémoire fixe pour faire le tour. Pas un système de fichiers, mais ...
la source
Impossible. Toute la RAM est soumise à la pagination à la fois par la conception matérielle du processeur et la conception du micro-noyau Linux. Il n'y a AUCUNE raison légitime de traiter la mémoire autrement. TOUS les algorithmes logiciels peuvent être adaptés pour utiliser le schéma de mise en cache des fichiers et la mémoire paginée. Le virtuel est TOUJOURS meilleur et plus efficace.
Les disques RAM de taille limitée vont à l'encontre des principes de base du monde virtuel. Vous devez supposer que seules les demandes de fichiers utiles sont envoyées au système de fichiers hôte et que toutes ces demandes ont une importance et une priorité égales dans le monde virtuel (le seul modèle qui compte).
Il a été mathématiquement prouvé que même les processus en temps réel correspondent à cette règle. Si vous avez un problème de vitesse, il NE PEUT JAMAIS être résolu en utilisant de la RAM comme stockage == tout le système hôte doit fonctionner plus rapidement du CPU au bus d'E / S au périphérique de stockage permanent. Tous les problèmes informatiques dégénérés, sauf artificiels, ont suffisamment de branches et d'exigences d'E / S de fichiers pour que l'augmentation de la vitesse moyenne de la mise en cache RAM soit la meilleure que vous puissiez faire.
la source
mlock()
mlock2()
mlockall()