문제

Erlang 에뮬레이터를 시작하면 첫 번째 비트에 많은 정보가 포함됩니다.(효과를 위해 약간 재구성되었습니다.)

manoa:~ stu$ erl
Erlang (BEAM) emulator version 5.6.5 
[source] [smp:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6.5 (abort with ^G)
1> 

그 중 일부는 아마도 정확할 것으로 추측할 수 있지만 일부는 '여기 마법이 있다'는 뜻입니다.

  • Erlang (BEAM) emulator version 5.6.5:물론 그 버전
  • [source]:에뮬레이터가 소스에서 컴파일되었습니까?
  • [smp:2]:2개의 CPU 코어가 감지되어 사용 가능
  • [async-threads:0]: 현재 실행 중인 작업?
  • [hipe]: ?
  • [kernel-poll:false]: ?

또 다른 것도 있는지 궁금합니다 [foo] 다양한 구성, 빌드 또는 시작 매개변수로 나타날 수 있는 항목입니다.

그렇다면 Erlang 에뮬레이터 정보 설명은 무엇을 의미합니까?

도움이 되었습니까?

해결책

비동기-스레드 : 0

로드 된 드라이버를 사용할 수있는 비동기 스레드 풀의 크기. 이를 통해 빔 VM에서 별도의 커널 스레드에서 SYSCALL을 차단할 수 있습니다. 명령 스위치를 사용하십시오 +A N 수영장의 크기를 조정합니다.

Hipe

Erlang 소스 및 바이트 코드의 기본 편집 지원. 대부분 숫자 크 런칭 코드에 유용한 경향이 있습니다. IO-bound 코드는 바이트 코드 통역사에서 정상적으로 수행합니다.

kernel-poll : false

이전 Select (2) 및 Poll (2) 시스템은 일부 파일 디스크립터가 쓰기 또는 읽기를 차단 해제 할 준비가되어 있다는 알림을받습니다. 그들은 많은 수의 열린 파일 설명자로 잘 확장되지 않습니다. 최신 운영 시스템에는 대체 인터페이스가 있으며 Linux에는 Epoll이 있으며 FreeBSD에는 Kqueue가 있습니다. 명령 스위치로 활성화합니다 +K true

다른 팁

얼랭의 경우 20.0, 버전 문자열 태그의 전체 세트는 다음과 같습니다.

[64비트]

BEAM 에뮬레이터는 64비트 CPU를 최대한 활용하도록 제작되었습니다.

[비동기 스레드:10]

이는 Erlang 에뮬레이터의 비동기 스레드 풀에 있는 스레드 수를 나타내며, 에뮬레이터가 중단되기 전에 차단된 시스템 호출 수를 백그라운드 스레드로 분리할 수 있음을 어느 정도 알려줍니다.

현재 기본값은 10이지만 수년 동안 기본값은 0이었습니다. 이는 모든 시스템 호출이 각 Erlang 에뮬레이터 스레드 내에서 동기식으로 실행되었음을 의미합니다.시스템 호출이 차단되면 시스템 호출이 완료될 때까지 Erlang 에뮬레이터 스레드의 실행이 중지됩니다.현재의 작은 기본값을 사용하면 시스템 호출이 비동기 I/O 스레드 중 하나를 차단하는 동안 에뮬레이터가 종료되어 다른 작업을 수행할 수 있습니다.

다음을 사용하여 기본값을 변경할 수 있습니다. +A Erlang 런타임에 대한 옵션입니다.(예: erl +A 50) 이를 변경하려는 경우 결과가 특정 시스템 및 작업 부하에 따라 달라질 수 있다는 점에 유의하세요.값이 너무 높으면 성능이 저하될 수 있습니다. 시스템이 매우 바쁠 때 시스템이 백그라운드에서 많은 작업을 시도하게 하여 더욱 바빠지기 때문입니다.일부 워크로드에서는 다음을 사용하여 기능을 비활성화합니다. erl +A 0 최선의 선택이 될 수 있습니다.

[디버그 컴파일]

이는 다음과 같이 결과 실행 파일을 더 쉽게 디버깅할 수 있도록 컴파일러 옵션이 설정된 대체 BEAM 에뮬레이터를 빌드하려는 경우에만 나타납니다. gdb 또는 유사합니다.또한 이 대체 BEAM 에뮬레이터를 특별한 방법으로 실행해야 합니다.

Erlang BEAM 에뮬레이터는 일반적으로 속도를 위해 구축되므로 종종 디버거 작업을 더 어렵게 만듭니다.BEAM 에뮬레이터의 다음 버전 개발 작업을 진행 중인 경우 작업을 개선하면서 특별한 디버그 빌드를 실행하는 것이 도움이 될 수 있습니다.

이 모드를 활성화하려면, cd ~ 안으로 erts/emulator 실행 후 Erlang 소스 트리 아래 configure 그 위에 다음과 같이 입력하세요. ERL_TOP=../.. make FLAVOR=smp debug.그런 다음 디버깅 가능한 새로운 BEAM 에뮬레이터를 실행하려면 다음을 실행해야 합니다. bin/cerl -debug Erlang/OTP 시스템의 나머지 부분이 구축된 후 Erlang 소스 트리의 최상위 수준에서.

보다 디버그 지원 Erlang 런타임 시스템을 구축하는 방법 이 주제에 대한 자세한 내용은

[ds:1:1:1]

ERTS 9.0부터는 SMP를 지원하는 BEAM 에뮬레이터를 구축한 경우 항상 표시되어야 합니다.그것은 "더러운 스케줄러" 특징.값은 이 시스템의 기능 구성을 설명합니다.

이 기능은 처음에는 Erlang 20.0에서처럼 SMP 빌드에서 기본적으로 컴파일되지 않은 실험적 기능으로 Erlang 19.0에서 도입되었습니다.

[디트레이스]

합격하면 나타납니다 --with-dynamic-trace=dtrace ~로 configure 실험을 활성화하는 스크립트 DTrace R15B01에 계측 기능이 추가되었습니다.이 기능은 OS X, Solaris 및 FreeBSD에서만 작동할 것으로 예상됩니다.향후 다른 플랫폼에서도 작동할 수 있습니다.보다 [시스템탭] Linux 시스템에 동시에 추가된 대안은 아래에서 확인하세요.

[프레임 포인터]

이는 의 특별한 경우이다. [디버그 컴파일] 위의 옵션은 프레임 포인터 최적화.사용 frmptr 대신에 debug 이 모드를 활성화하려면 위 명령을 사용하세요.

[히페]

에뮬레이터는 다음과 같이 컴파일되었습니다. HiPE Erlang을 위한 즉석 네이티브 코드 컴파일러인 기능이 활성화되었습니다.이는 Erlang이 지원하는 가장 널리 사용되는 CPU 유형에서만 작동하며 해당 CPU에서도 모든 구성에서는 작동하지 않으므로 선택 사항입니다.

[명령 계산]

정의하면 나타납니다. ERTS_OPCODE_COUNTER_SUPPORT 이는 빌드 중에 BEAM opcode 계산 기능을 활성화하며 아마도 BEAM 에뮬레이터 성능을 프로파일링하는 사람들에게 유용할 것입니다.

[커널 폴링:false]

Erlang 에뮬레이터 코드는 OS의 네트워크 스택에 I/O에 사용할 수 있는 파일 설명자 및 소켓 집합을 묻는 여러 가지 방법을 알고 있습니다.거의 모든 곳에서 작동하는 유일한 것은 오래된 BSD입니다. select() 설계로 인해 상대적으로 느리고 그 외에도 다른 확장성 문제가 있는 호출입니다.따라서 대부분의 시스템에는 하나 이상의 더 빠르고 확장 가능한 대체 항목이 있습니다(예: kqueue, epoll(), 등.— 하지만 어느 곳에서도 지원되지 않습니다.에뮬레이터 시작 메시지가 다음과 같이 표시될 때 false 여기서는 커널 폴링을 사용할 수 없거나 사용 가능하지만 통과하지 못했음을 의미할 수 있습니다. +K true 에게 erl.

[잠금 확인]

합격하면 나타납니다 --enable-lock-check 구성 스크립트에.

[잠금 계산]

합격하면 나타납니다 --enable-lock-counter 구성 스크립트에.

[lttng]

합격하면 나타납니다 --with-dynamic-trace=lttng ~로 configure 지원을 활성화하는 스크립트 LTTNG, Linux용 추적 프레임워크입니다.

[정화 컴파일]

특수 실행 시 나타납니다. 정화하다-Erlang BEAM 에뮬레이터의 인식 버전.지침은 에서와 동일합니다. [디버그 컴파일] 위 섹션을 제외하고는 purify 대신 명령에서 debug.

[공유-보존]

통과하면 이렇게 나옵니다 --enable-sharing-preserving ~로 configure 스크립트는 다음과 같은 원인이 됩니다. 노드 내에서 불변 조건 공유 평면화하고 다시 만드는 대신.이 옵션을 사용하면 프로그램이 더 빨라지거나 느려지는지 여부는 프로그램의 세부 사항에 따라 달라지므로 기본 빌드에서 이 옵션이 설정되지 않는 이유는 무엇입니까?

[smp:2:2]

그만큼 [smp:2] 태그는 Erlang R13에서 이 형식으로 변경되었습니다. 즉, 2개의 스케줄러가 모두 온라인 상태임을 의미합니다."erl +S1"이라고 말하면 다음과 같습니다. [smp:1:1] 대신에.erlang:system_flag(schedulers_online, N)을 사용하여 런타임 시 스케줄러를 오프라인으로 전환할 수 있습니다. 여기서 N은 1과 감지된 코어 수(포함) 사이의 값일 수 있습니다.

[소스] 또는 [소스-버전]

이는 일부 제3자(아마도 귀하, OS 배포판의 패키지 관리자, 시스템 관리자)가 소스 코드에서 Erlang을 구축했음을 의미합니다.대안은 Erlang.org에서 공식 바이너리 버전을 다운로드하는 것입니다.

다음에서 Erlang을 빌드하면 Git 저장소, 이 메시지는 다음과 같이 변경됩니다. [소스-8acc644], 여기서 16진수는 저장소의 현재 조각입니다. 힘내 해시, 이를 통해 특정 실행 파일을 빌드한 소스의 정확한 버전을 확인할 수 있습니다.

[시스템 탭]

합격하면 나타납니다 --with-dynamic-trace=systemtap ~로 configure 스크립트.이는 다음의 대안입니다. =dtrace 이 구성 옵션의 값은 다음을 사용하여 Linux에서 본질적으로 동일한 기능을 제공합니다. 시스템탭, DTrace는 일반적으로 Linux에서 사용할 수 없기 때문입니다.보다 [디트레이스] 위에.

[유형 주장]

주석을 해제하면 나타납니다. ET_DEBUG 줄을 서다 erts/emulator/beam/erl_term.h, 모든 유형별 데이터 액세스에 대한 런타임 검사가 가능합니다.에뮬레이터 속도가 느려지므로 기본적으로 활성화되지 않습니다.

[valgrind 컴파일]

특수 실행 시 나타납니다. 발그린드-Erlang BEAM 에뮬레이터의 인식 버전.지침은 에서와 동일합니다. [디버그 컴파일] 위 섹션을 제외하고는 valgrind 대신 명령에서 debug.


(이 목록은 다음에서 가져온 것입니다. erts/emulator/beam/erl_bif_info.c Erlang OTP 소스 트리에서.정의를 참조하세요 erts_system_version 파일 상단 근처에 있습니다.)


사용되지 않는 태그:

  • 그만큼 [64비트 하프워드] BEAM 에뮬레이터의 64비트 빌드에 대한 최적화가 R14에 추가된 후 19.0에서는 설명 없이 제거되었습니다.이는 또한 다음을 볼 가능성을 제거합니다. [c-스택 개체 없음] 하프워드 에뮬레이터와 연결된 태그입니다.

  • 그만큼 [rq:2] Erlang BEAM 에뮬레이터의 SMP 빌드에서 확장성을 향상시키기 위한 실행 대기열 시스템을 참조하는 태그입니다.R13B에 추가되었으며 R15B에서는 다음으로 대체되었습니다. 더 나은 솔루션.

  • 그만큼 [하이브리드 힙] 그리고 [증분 GC] 태그 및 관련 기능은 본질적으로 R15B02에서 제거되었습니다. 실패한 실험.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top