Cache de pixels distribué
Un cache de pixels distribué est une extension du cache de pixels traditionnel disponible sur un hôte unique. Le cache de pixels distribué peut s'étendre sur plusieurs serveurs afin de croître en taille et en capacité transactionnelle pour prendre en charge de très grandes images ou de grandes séquences d'images. Démarrez le serveur de cache de pixels sur un ou plusieurs hôtes. Lorsque vous lisez ou traitez une image et que les ressources locales du cache de pixels sont épuisées, ImageMagick contacte un ou plusieurs de ces serveurs de pixels distants pour stocker ou récupérer des pixels.
Pour les images vraiment grandes ou les grandes séquences d'images, ou si les ressources de votre hôte sont limitées, vous pouvez utiliser un cache de pixels distribué sur un ou plusieurs hôtes distants. Pour commencer, définissez d'abord votre secret partagé dans le fichier de configuration de la politique de sécurité policy.xml :
<policy domain="cache" name="shared-secret" value="_passphrase_ " stealth="true"/>
Ici, nous créons un service de cache de pixels distribué et l'utilisons depuis notre poste de travail :
magick -distribute-cache 6668 & # démarrage sur localhost
magick -limit memory 1GiB -limit map 2GiB -limit disk 4GiB \
-define registry:cache:hosts=localhost:6668 \
myhugeimage.jpg -sharpen 5x2 myhugeimage.png
Ici, nous créons deux caches de pixels distribués et les utilisons depuis notre poste de travail :
magick -distribute-cache 6668 & # démarrage sur 192.168.100.50
magick -distribute-cache 6668 & # démarrage sur 192.168.100.51
magick -limit memory 1GiB -limit map 2GiB -limit disk 4GiB \
-define registry:cache:hosts=192.168.100.50:6668,192.168.100.51:6668 \
myhugeimage.jpg -sharpen 5x2 myhugeimage.png
Pour les grandes séquences d'images, les serveurs sont contactés selon un tourniquet (round-robin) afin de répartir la charge sur plusieurs caches de pixels distribués (en supposant que vous disposiez d'une liste d'hôtes plutôt que d'un hôte unique). Dans notre exemple, quelques ressources modestes sont disponibles sur le poste de travail, telles que définies par l'option -limit. Les images plus petites sont allouées sur le poste de travail jusqu'aux limites spécifiées.
Vos tâches de traitement d'image risquent d'être plus lentes lors de l'utilisation d'un cache de pixels distribué, car les pixels sont échangés entre le client et le serveur sur un réseau. Les algorithmes qui accèdent à des pixels virtuels (par ex. -sharpen) sont sensiblement plus lents, jusqu'à 3 fois plus lents, que les algorithmes qui n'accèdent qu'à des pixels authentiques (par ex. -negate), en raison de l'augmentation du trafic réseau.
Un client ne peut contacter qu'un serveur de cache de pixels distribué compatible. La compatibilité exige la même interface de bibliothèque ImageMagick, la même profondeur de quantum, le même état HDRI, la même taille de mot de l'OS, le même boutisme (endianness) et la même phrase secrète. Le cache de pixels distribué vérifie ces attributs et lève une exception si ces exigences ne sont pas satisfaites.