본문 바로가기
Programming/삽질일기

[Java] JMH 벤치마크 중 org.openjdk.jmh.runner.RunnerException: ERROR: Another JMH instance might be running.

by kghworks 2023. 12. 27.

증상

에러 메시지

gimgihyeon@gimgihyeon-ui-Mac-Studio programming-algorithms % ./gradlew jmh

Starting a Gradle Daemon, 1 busy Daemon could not be reused, use --status for details

> Task :jmh FAILED
ERROR: org.openjdk.jmh.runner.RunnerException: ERROR: Another JMH instance might be running. Unable to acquire the JMH lock (/Users/gimgihyeon/Desktop/kghworks/workspace_intellij/programming-algorithms/build/tmp/jmh/jmh.lock), exiting. Use -Djmh.ignoreLock=true to forcefully continue.
        at org.openjdk.jmh.runner.Runner.run(Runner.java:211)
        at org.openjdk.jmh.Main.main(Main.java:71)

 

jmh 벤치마크 테스트 중 받은 에러 메시지다. 아래 부분만 발췌해보니 간단히 원인이 보인다.

ERROR: org.openjdk.jmh.runner.RunnerException: ERROR: Another JMH instance might be running. 
Unable to acquire the JMH lock (/Users.../jmh.lock), exiting. 
Use -Djmh.ignoreLock=true to forcefully continue.

 

대충 얘기하면 다른 JMH 인스턴스가 실행 중 이어서 JMH lock 획득을 할 수 없다는 거다.

에러 로그에서 제시해 주는 것처럼 -Djmh.ignoreLock=true 옵션을 주거나, 아니면 lock을 강제로 해제해버리는 방법이 있어 보인다.

 

해결

나의 경우 기존에 벤치마크 중이던 것을 강제로 종료한뒤 다시 실행한 것이 원인이어서 기존의 lock을 해지시켜버렸다.

cd <에러 로그에 나온 jmh.lock이 있는 디렉터리>
rm -f jmh.lock

댓글