Activation de l'accélération de la compression matérielle (AIX, Linux uniquement)

Vous pouvez utiliser l'accélération de la compression matérielle pour augmenter la vitesse de compression et de décompression des données sur certains systèmes Power Systems ou IBM Z® . Si votre application utilise des classes java.util.zip pour fournir des services de compression Java™ , la compression matérielle peut réduire la consommation d'UC et les temps de traitement.

Avant de commencer

La compression matérielle est effectuée par une carte de compression/décompression de données PCIe, pilotée par le pilote de périphérique GenWQE (Generic Work Queue Engine) qui est fourni dans certains systèmes d'exploitation. Si vous souhaitez que vos applications Java utilisent des services de compression matérielle, votre système doit respecter la configuration logicielle et matérielle suivante:
AIX
  • AIX® 7.1, niveau de technologie 3, Service Pack 2 ou ultérieur
  • Pilote de périphérique GenWQE. Les systèmes d'exploitation susmentionnés incluent déjà ce pilote.
  • Carte accélérateur PCIe3 LP Field Programmable Gate Array (FPGA)
Linux on Power Systems
  • L'un des systèmes d'exploitation suivants :
    • Red Hat Enterprise Linux® 7 pour Power Systems 64 bits
    • Début des modifications apportées dans l'actualisation de service 1Red Hat Enterprise Linux 7.1 for 64-bit Power Systems (Little Endian)Fin des modifications apportées dans l'actualisation de service 1
    • Red Hat Enterprise Linux 7.3 for 64-bit Power Systems (Little Endian)
  • Pilote de périphérique GenWQE. Les systèmes d'exploitation susmentionnés incluent déjà ce pilote.
  • Carte accélérateur PCIe3 LP Field Programmable Gate Array (FPGA)
Début des modifications apportées dans l'actualisation de service 2 groupe de correctifs 10
Linux on IBM Z
  • L'un des systèmes matériels suivants: IBM zEnterprise® zEC12 GA2, zBC12, z13, z14, Début des modifications apportées dans l'actualisation de service 6z15 ou version ultérieureFin des modifications apportées dans l'actualisation de service 6. D'autres conditions sont à remplir ; elles dépendent de votre système physique :
Début des modifications apportées dans l'actualisation de service 6
z15 et ultérieure
Aucune condition matérielle ou logicielle spécifique ne s'applique aux systèmes z15 et ultérieurs. La solution Integrated Accelerator for zEDC mise en oeuvre dans ces systèmes offre une accélération des données intégrée, de sorte qu'il n'est plus nécessaire de recourir à un adaptateur séparé.
Fin des modifications apportées dans l'actualisation de service 6
z14 ou antérieur
  • L'un des systèmes d'exploitation suivants :
    • SUSE Linux Enterprise Server pour System z® 12 SP1, ou version ultérieure
    • Début des modifications apportées dans l'actualisation de service 3Red Hat Enterprise Linux 7.2 for z Systems ®Fin des modifications apportées dans l'actualisation de service 3
  • Pilote de périphérique GenWQE. Les systèmes d'exploitation susmentionnés incluent déjà ce pilote.
  • IBM® zEnterprise zEC12 GA2, zBC12, z13ou z14.
  • Adaptateur zEDC Express installé dans les tiroirs d'E-S PCIe du serveur.
Remarque: La compression matérielle sur les systèmes z14 et antérieurs utilise l'adaptateur zEDC Express, qui est désormais obsolète.
Fin des modifications apportées dans l'actualisation de service 2 groupe de correctifs 10

Pour plus d'informations sur l'installation et l'utilisation d' GenWQE,, consultez l'introduction du Moteur de file d'attente générique ( GenWQE ) dans les informations d' Linux.

A propos de cette tâche

La compression de données accélérée est fournie avec la bibliothèque native du developer kit Zip, que vous appelez en utilisant l'API java.util.zip.

Procédure

  1. z14 et versions antérieures uniquement: Définissez les variables d'environnement suivantes:
    export ZLIB_DEFLATE_IMPL=1
    export ZLIB_INFLATE_IMPL=1
    Ces variables d'environnement spécifient l'utilisation de la compression ou décompression matérielle ou logicielle. Par défaut, les deux variables sont définies sur 0, ce qui indique que les services de compression logicielle sont utilisés pour la compression et la décompression des applications Java.
  2. z14 et versions antérieures uniquement: Vérifiez que les mémoires tampon d'entrée de votre application Java sont suffisamment volumineuses.

    De la ressource UC est nécessaire pour envoyer les données à l'accélérateur de compression matérielle. Pour les petites quantités de données, ce coût peut être supérieur à l'économie obtenue par l'utilisation des services de compression matérielle. Vous pouvez définir une valeur de seuil pour les données à envoyer à ces services, à l'aide de la variable ZLIB_INFLATE_THRESHOLD. Si la taille des données est inférieure au seuil (16 ko par défaut), c'est la compression logicielle qui est utilisée à la place.

    Voici quelques méthodes qui permettent de déterminer la taille de tampon actuelle de l'application :
    • Examinez le code source.
    • Examinez le comportement de l'application en la traçant (voir Tracing Java applications dans la référence de machine virtuelleJ9) ou en la surveillant à l'aide d'un outil.
  3. Dans votre application Java, utilisez les classes et les méthodes du package java.util.zip pour compresser et décompresser les données.
    L'exemple suivant (qui exclut les importations et les blocs try/catch) utilise la classe GZIPOutputStream pour lire des données dans un fichier et les écrire compressées dans un autre :
    // This 64 KB input buffer exceeds the threshold value set by ZLIB_INFLATE_THRESHOLD, 
    // so is elegible for hardware compression:
    byte buffer[] = new byte[64 * 1024];
    byte outputFile[];
    
    input = new FileInputStream(argv[0]);
    output = new ByteArrayOutputStream();
    gzStream = new GZIPOutputStream(output, 4096);
    
    for(;;) {
        // Read data from an uncompressed file:
        readBytes = input.read(buffer);
        if(readBytes < 0) {
            break;
        }
        else {
            // Write data to a compressed file:
            gzStream.write(buffer, 0, readBytes);
        }
    }

Résultats

Si le système répond à la configuration et aux conditions décrites, c'est la compression de données matérielle accélérée qui est utilisée. Autrement, les services de compression logicielle sont utilisés pour la compression et la décompression.

Si vous voulez mesurer la différence de performances de votre application Java exécutée avec et sans compression matérielle, vous pouvez désactiver temporairement cette dernière en utilisant les variables d'environnement suivantes :
  • Début des modifications apportées dans l'actualisation de service 6z15 ou version ultérieure: DFLTCC=0Fin des modifications apportées dans l'actualisation de service 6
  • z14 ou antérieure : ZLIB_DEFLATE_IMPL=0 pour la compression et ZLIB_INFLATE_IMPL=0 pour la décompression.

Si vous rencontrez des problèmes, voir Problèmes d'accélération de la compression matérielle sur les systèmes Power Systems et IBM Z (AIX, Linux uniquement).