[JAVA] J'ai jeté un coup d'œil aux ressources d'Azure Container Instance

Consultez l'article Dive to Java (@YaSuenag, @sugarlife) dans Web + DB Press Vol.106 indiquant que vous ne pouvez pas voir le contrôle des ressources de groupe de contrôle à partir de la JVM dans Java 8 (vous pouvez contrôler les ressources dans Java 10). , Je voulais l'essayer sur Azure (ACI), alors je l'ai essayé.

Créer un conteneur

Je vais faire diverses choses, donc je vais créer une instance qui se connecte à SSH. En cherchant Docker Hub, j'ai emprunté l'image de here. Veuillez vous référer au lien pour le mot de passe root, etc. lors de son utilisation.

Déployez le conteneur sur Azure Cloud Shell.

$ az group create --name con01 --location eastus
$ az container create --resource-group con01 --name con01 --image rastasheep/ubuntu-sshd --dns-name-label con01 --ports 22

Connectez-vous avec SSH et installez Java 8.

# apt-get update
# apt-get install openjdk-8-jre
# apt-get install openjdk-8-jdk

# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
# javac -version
javac 1.8.0_181

Si vous l'installez avec default-j **, Java 10 est inclus.

# apt-get install default-jre
# apt-get install default-jdk

# java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)
# javac -version
javac 10.0.2

Compilez l'exemple de code inclus.

public class Main {
  public static void main(String[] args){
    Runtime rt = Runtime.getRuntime();
    System.err.format("VERSION : %s%nCPU : %d processors%nHeap : %s%n",
                      System.getProperty("java.version"),
                      rt.availableProcessors(),
                      humanRedable(rt.maxMemory()));
  }

  private static String humanRedable(long bytes){
    int unit = 1024;
    int exp = (int) (Math.log(bytes) / Math.log(unit));
    return String.format("%4.1f %sB",
                         bytes/Math.pow(unit,exp),
                         " KMGTPEZY".charAt(exp));
  }
}

Quand tu cours ...

# javac -cp . Main.java
# java -cp . Main
VERSION : 1.8.0_181
CPU : 1 processors
Heap : 464.0 MB

cette? 1 processeurs? Quelque chose d'inexplicable. Je m'attendais à ce que ce soit un peu plus grand. Oh oui. Le conteneur héberge-t-il lui-même 1 Core?

Jetons un coup d'œil à / proc / cpuinfo.

# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
stepping        : 2
microcode       : 0xffffffff
cpu MHz         : 2397.214
cache size      : 30720 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 15
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single kaiser fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips        : 4794.42
clflush size    : 64
cache_alignment : 64
address sizes   : 44 bits physical, 48 bits virtual
power management:

Hmmm, c'est un noyau. En regardant ici, il semble que les restrictions peuvent être bien définies du côté de l'hôte du conteneur, mais dans ce cas, regardez la disponibilité. Et est-ce le décompte à partir du moment du début du conteneur?

Dans l'environnement, environ 15 minutes après le démarrage

# cat /proc/uptime
5132.17 4473.34

C'était comme ça, donc ça ne semblait pas être compté depuis le début.

Je me demande donc si l'hôte du conteneur d'origine est 1 Core.

Si vous pensez mal, veuillez signaler: bow_tone1:

Eh bien, le résultat était un peu différent de ce que j'avais imaginé, mais je suis content de l'avoir appris.

Recommended Posts

J'ai jeté un coup d'œil aux ressources d'Azure Container Instance
J'ai jeté un coup d'œil à l'intérieur du Java HashMap
Jetons un coup d'œil à l'écran de Quant Analyzer!
Un rapide coup d'œil sur le problème de Monty Hall
Jetons un coup d'œil aux fonctions de la console de gestion Keycloak (édition administrateur)
J'ai écrit un diagramme de séquence de l'exemple j.u.c.Flow
Je me suis rappelé Tribuo publié par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
Jetons un coup d'œil aux fonctions de la console de gestion de Keycloak (édition utilisateur), service de compte utilisateur
J'ai jeté un coup d'œil sur la façon dont l'interface Javascript de WebView est appelée lors de l'utilisation d'OkHttp.
Jetons un coup d'œil à la procédure de démarrage de la JVM Hotspot
Pourquoi insérer un saut de ligne à la fin du fichier
J'ai enquêté sur l'instance englobante.
Obtenez une instance proxy du composant lui-même dans Spring Boot
[Java] Jetons un coup d'œil aux expressions de commutation (aperçu) du JDK 13.
J'ai essayé d'utiliser la fonction de cache d'Application Container Cloud Service
J'ai fait un petit bijou pour poster le texte du mode org sur qiita
J'ai créé un outil pour afficher la différence du fichier CSV
Retour rapide sur Java au cours des cinq dernières années
J'ai lu la source d'Integer
Un mémorandum du problème FizzBuzz
J'ai lu la source de Long
J'ai lu la source de Short
J'ai lu la source de Byte
J'ai lu la source de String
Une belle solution de contournement lorsque "avoir une instance de l'une des deux classes"
J'ai essayé d'exécuter facilement le moteur de recherche d'itinéraire (OSRM) avec un conteneur
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ