dragonwell-releng / dragonwell-adoptium

0 stars 0 forks source link

【dragonwell8】jdk/internal/platform/docker/TestDockerMemoryMetrics.java中failcount子项测试,有10%killed的概率。 #325

Closed owanqian closed 8 months ago

owanqian commented 8 months ago

https://tone.aliyun-inc.com/ws/xesljfzh/test_result/266607

【环境准备】

wget -O binary.tar.gz  http://114.55.64.175:8666/compiler-ci-bucket/dragonwell8/20240106-002904-025-%23268-linux.x86_64.release.master-092ca65fab950f30987d6f604ec27a2c6b98180b.tar.gz
mkdir binary-download && mkdir test-image
tar xzvf binary.tar.gz -C binary-download
cd binary-download && export JAVA_HOME=$PWD ; export PATH=$JAVA_HOME/bin:$PATH ; export TEST_JDK_HOME=$JAVA_HOME && cd -
wget -O jtreg.zip http://114.55.64.175:8666/compiler-ci-bucket/tools/jtreg-6.1.1.zip
unzip jtreg.zip
cd jtreg 
export JT_HOME=$PWD ; export PATH=$PWD/bin:$PATH
cd -
git clone https://github.com/dragonwell-project/dragonwell8.git jdk-repo
args="-Xmixed"
test=jdk/internal/platform/docker/TestDockerMemoryMetrics.java
jtreg  -nr -v:fail,error -w jt-work $args  $test

此问题,在x86和arm上都有概率失败。

直接进入容器内手工执行100次, 失败次数dragonwell8 10内以内。 Temurin通常20次以上。而release版本执行了2000次,没有一次失败。 for i in seq 1 100 ; do /jdk/bin/java -Xmx64m -cp /test-classes/ -Djdk.lang.processReaperUseDefaultStackSize=true -Dtest.wisp.socketAddress=www.alibabacloud.com -Xmixed -ea -esa MetricsMemoryTester failcount >> test100 2>&1; done

手工执行killed,情况。 [root@f863c5d90ab2 /]# /jdk/bin/java -Xmx64m -cp /test-classes/ -Djdk.lang.processReaperUseDefaultStackSize=true -Dtest.wisp.socketAddress=www.alibabacloud.com -Xmixed -ea -esa MetricsMemoryTester failcount [failcount] Killed [root@f863c5d90ab2 /]# echo $? 137

成功的日志: [root@f863c5d90ab2 /]# /jdk/bin/java -Xmx64m -cp /test-classes/ -Djdk.lang.processReaperUseDefaultStackSize=true -Dtest.wisp.socketAddress=www.alibabacloud.com -Xmixed -ea -esa MetricsMemoryTester failcount [failcount] DEBUG: Bytes allocation length 1: 8388608 TEST PASSED!!! [root@f863c5d90ab2 /]# echo $? 0

【启动容器测试】

  1. 环境上安装docker
  2. 按照上述手工复现方式跑一次用例
  3. cd jt-work/index-check/jdk/internal/platform/docker/TestDockerMemoryMetrics
  4. docker build --no-cache --tag jdk-internal:test-metrics-memory ./jdk-docker
  5. docker run -it --rm --volume jt-work/jdk_test/classes/18/jdk/internal/platform/docker:/test-classes/ --memory=64m jdk-internal:test-metrics-memory
  6. 执行用例: /jdk/bin/java -Xmx64m -cp /test-classes/ -Djdk.lang.processReaperUseDefaultStackSize=true -Dtest.wisp.socketAddress=www.alibabacloud.com -Xmixed -ea -esa MetricsMemoryTester failcount

【对比测试】

release版本 执行了2个1000次,一次失败也没有出现.。 wget https://dragonwell.oss-cn-shanghai.aliyuncs.com/8.17.18/Alibaba_Dragonwell_Extended_8.17.18_x64_linux.tar.gz

[root@c8c7fbd70405 /]# : > test100
[root@c8c7fbd70405 /]# for i in `seq 1 1000` ; do /jdk/bin/java -Xmx64m -cp /test-classes/ -Djdk.lang.processReaperUseDefaultStackSize=true -Dtest.wisp.socketAddress=www.alibabacloud.com -Xmixed -ea -esa MetricsMemoryTester failcount >> test100 2>&1; done
[root@c8c7fbd70405 /]# cat test100 | grep PASS | wc -l
1000
[root@c8c7fbd70405 /]# /jdk/bin/java -version
openjdk version "1.8.0_392"
OpenJDK Runtime Environment (Alibaba Dragonwell Extended Edition 8.17.18) (build 1.8.0_392-b01)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Extended Edition 8.17.18) (build 25.392-b01, mixed mode)

Temurin. 同样的现象,失败的比例更高一些. http://114.55.64.175:8666/compiler-ci-bucket/openjdk/jdk8u392-ga/OpenJDK8U-jdk_x64_linux_hotspot_8u392b08.tar.gz

[root@f863c5d90ab2 /]# /jdk/bin/java -version
openjdk version "1.8.0_392"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_392-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.392-b08, mixed mode)

【用例日志】

========== NEW TEST CASE:      testMemoryFailCount64m
[COMMAND]
docker run --tty=true --rm --volume /tmp/tone/run/jtreg/jt-work/jdk_test/classes/19/jdk/internal/platform/docker:/test-classes/ --memory=64m jdk-internal:test-metrics-memory /jdk/bin/java -Xmx64m -cp /test-classes/ -Djdk.lang.processReaperUseDefaultStackSize=true -Dtest.wisp.socketAddress=www.alibabacloud.com -Xmixed -ea -esa MetricsMemoryTester failcount 
[ELAPSED: 675 ms]
[STDERR]

[STDOUT]
[failcount]

[COMMAND]
docker rmi --force jdk-internal:test-metrics-memory 
[ELAPSED: 29 ms]
[STDERR]

[STDOUT]
Untagged: jdk-internal:test-metrics-memory

STDERR:
 stdout: [[failcount]
];
 stderr: []
 exitValue = 137

java.lang.RuntimeException: Expected to get exit value of [0]

    at jdk.test.lib.process.OutputAnalyzer.shouldHaveExitValue(OutputAnalyzer.java:396)
    at TestDockerMemoryMetrics.testMemoryFailCount(TestDockerMemoryMetrics.java:118)
    at TestDockerMemoryMetrics.main(TestDockerMemoryMetrics.java:79)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
    at java.lang.Thread.run(Thread.java:855)

JavaTest Message: Test threw exception: java.lang.RuntimeException: Expected to get exit value of [0]

JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: java.lang.RuntimeException: Expected to get exit value of [0]

【版本信息】

[root@iZbp161090r54kc5nruzpmZ binary-download]# uname -a ; cat /etc/os-release ; free -h; lscpu| head -n 25;java -version; java -Xinternalversion
Linux iZbp161090r54kc5nruzpmZ 5.10.134-15.an8.x86_64 #1 SMP Thu Jul 20 00:35:47 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
NAME="Anolis OS"
VERSION="8.8"
ID="anolis"
ID_LIKE="rhel fedora centos"
VERSION_ID="8.8"
PLATFORM_ID="platform:an8"
PRETTY_NAME="Anolis OS 8.8"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"

              total        used        free      shared  buff/cache   available
Mem:           60Gi       741Mi        57Gi       2.0Mi       2.8Gi        59Gi
Swap:            0B          0B          0B
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              32
On-line CPU(s) list: 0-31
Thread(s) per core:  2
Core(s) per socket:  16
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
BIOS Vendor ID:      Alibaba Cloud
CPU family:          6
Model:               106
Model name:          Intel(R) Xeon(R) Platinum 8369B CPU @ 2.70GHz
BIOS Model name:     pc-i440fx-2.1
Stepping:            6
CPU MHz:             3510.943
BogoMIPS:            5399.99
Hypervisor vendor:   KVM
Virtualization type: full
L1d cache:           48K
L1i cache:           32K
L2 cache:            1280K
L3 cache:            49152K
NUMA node0 CPU(s):   0-31
openjdk version "1.8.0_372"
OpenJDK Runtime Environment (Alibaba Dragonwell Extended Edition 8.17.18) (build 1.8.0_372-b01)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Extended Edition 8.17.18) (build 25.372-b01, mixed mode)
OpenJDK 64-Bit Server VM (25.372-b01) for linux-amd64 JRE (1.8.0_372-b01), built on Jan  5 2024 16:33:38 by "" with gcc 7.5.0
sendaoYan commented 8 months ago

https://github.com/dragonwell-project/dragonwell21/issues/9 这里跟踪

sendaoYan commented 8 months ago

jdk/internal/platform/docker/TestDockerMemoryMetrics.java https://github.com/dragonwell-project/dragonwell21/issues/9 generic-all