Go to main content

Oracle® Solaris 11.4의 새로운 기능

인쇄 보기 종료

업데이트 날짜: 2018년 8월
 
 

성능 및 관찰 기능

이 절에서는 이 릴리스의 새로운 플랫폼 및 성능 개선 사항에 대해 설명합니다. 이러한 기능은 SPARC 및 x86 기반 시스템용 Oracle Solaris를 최적화함으로써 성능을 향상시키고, 시스템에 대해 보다 향상된 진단을 제공합니다.

DTrace SCSI 공급자

Oracle Solaris 11.4 릴리스에는 SCSI 명령 및 Oracle Solaris 시스템에서 실행되는 작업 관리 기능을 추적하도록 설계된 새로운 DTrace SCSI 공급자가 도입되었습니다. SCSI 공급자는 다음과 같은 이점이 있습니다.

  • 내부 구조를 알지 못해도 Oracle Solaris 시스템에서 SCSI 명령을 추적할 수 있습니다.

  • 가능한 한 SCSI T10 표준을 따르는 프로브 및 구조가 포함됩니다.

  • 다른 계층에서 I/O 트래픽을 추적하는 DTrace I/O 공급자에 대응하는 기능을 제공합니다.

  • 새로운 프로브를 사용하는 scsitrace 스크립트를 제공합니다.

다음 예에서는 SCSI 대상 재설정을 식별하는 1행 추적을 보여줍니다.

# dtrace -n 'scsi:::tmf-request
                      /(args[1] == SCSI_TMF_TARGET_RESET) &&
                       (args[0]->addr_path != "NULL")/ {                   
        printf("Target Reset sent to %s", args[0]->addr_path);}'

자세한 내용은 Oracle Solaris 12 DTrace(동적 추적) 설명서 의 iscsi Provider를 참조하십시오.

DTrace fileops 공급자

fileops 공급자는 개발자보다는 Oracle Solaris 관리자를 위해 의도된 표준 UNIX 파일 작업 프로브의 전체 세트를 제공합니다. 예를 들어, 공급자는 의사 파일 시스템을 포함하여 모든 파일 시스템에 대해 read 또는 write 대기 시간 정보를 표시할 수 있습니다.

fileops 프로브는 open, close, read, write 등의 파일 작업과 관련이 있습니다. 이러한 프로브는 특정 파일 시스템 유형에 국한되지 않으며, 외부 저장 장치에 대한 I/O에 의존하지도 않습니다. 예를 들어, fileops:::read 프로브는 데이터가 디스크에서 시작되었는지 또는 메모리에 캐시되었는지 여부에 관계없이 파일에서 읽기가 수행될 때 발생합니다.

read 프로브를 사용하면 여러 다른 파일 시스템 유형에서 읽기 대기 시간을 관찰할 수 있습니다. 예를 들면 다음과 같습니다.

fileops:::read
{
    @[args[0]->fi_fs] =
    quantize(args[1]);
}

결과 출력은 시스템에서 모든 파일 시스템 유형 간의 읽기 수 및 대기 시간 그래프를 제공합니다.

자세한 내용은 Oracle Solaris 12 DTrace(동적 추적) 설명서 의 fileops Provider를 참조하십시오.

TCP, UDP 및 IP용 DTrace MIB 공급자

Oracle Solaris 11.4 릴리스에서는 TCP, UDP 및 IP 연결을 식별할 수 있도록 네트워킹 스택에서 이벤트를 관찰하기 위한 기존 DTrace MIB 공급자가 프로토콜 정보를 표시하도록 확장되었습니다.

자세한 내용은 Oracle Solaris 12 DTrace(동적 추적) 설명서 의 mib Provider를 참조하십시오.

DTrace pcap() 작업

새로운 작업인 pcap()이 DTrace에 추가되었습니다. pcap() 작업은 다음 중 하나를 수행합니다.

  • tracemem()과 같이 패킷 데이터를 표시하지만, 인접 버퍼에 병합된 상태로 표시합니다.

  • freopen()으로 캡처 파일이 지정된 경우, pcap() 작업은 libpcap 함수 pcap_dump()를 통해 패킷 캡처 파일에 패킷 데이터를 캡처합니다. DTrace는 패킷 데이터에 다음을 수행합니다.

    1. 프로브 컨텍스트에서 패킷 데이터를 수집합니다.

    2. 데이터가 아직 인접 버퍼에 있지 않으면 인접 버퍼로 패킷 데이터를 병합합니다.

    3. pcap_dump() 함수를 통해 지정된 파일에 데이터를 덤프합니다. 이 함수는 데이터를 수집할 때 호출됩니다.

다음 pcap() 작업은 tracemem()과 같이 메모리를 stdout에 덤프합니다.

pcap(mblk, protocol);

다음 호출은 현재 pid를 지정하는 접미어를 사용하여 패킷 데이터를 캡처 파일에 덤프합니다.

freopen("/tmp/cap.%d", pid);
pcap(mblk, protocol);

이렇게 하면 프로세스 또는 서비스별로 패킷 추적을 조합할 수 있습니다. freopen()은 삭제 작업으로 분류되기 때문에 위 스크립트는 –w("삭제") dtrace 옵션을 지정해야 합니다. pcap() 작업은 삭제 작업이 아닙니다.

DTrace print() 작업

DTrace에는 임의 유형을 표시하기 위한 새로운 print() 작업이 포함되었습니다. 다음 예를 참조하십시오.

# dtrace -q -n 'fop_close:entry {print(*args[0]);exit(0)}'

vnode_t {
 v_lock = {
   _opaque = [ NULL ]
 }
 v_flag = 0x0
 v_count = 0x1
 v_data = 0xffffc10054425378
 v_vfsp = specfs`spec_vfs
 v_stream = 0xffffc100623354e8
 v_type = VCHR
 v_rdev = 0xee00000026
 v_vfsmountedhere = NULL
 v_op = 0xffffc10029d98040
 v_pages = NULL
 v_filocks = NULL
 v_shrlocks = NULL
 v_nbllock = {
   _opaque = [ NULL ]
 }
 v_cv = {
   _opaque = 0x0
 }
 v_pad = 0xbadd
 v_count_dnlc = 0x0
 v_locality = NULL
 v_femhead = NULL
 v_path = "/devices/pseudo/udp@0:udp"
 v_rdcnt = 0x0
 v_wrcnt = 0x0
 v_mmap_read = 0x0
 v_mmap_write = 0x0
 v_mpssdata = NULL
 v_fopdata = NULL
 v_vsd_lock = {
   _opaque = [ NULL ]
 }
 v_vsd = NULL
 v_xattrdir = NULL
 v_fw = 0xbaddcafebaddcafe
}

#

자세한 내용은 Oracle Solaris 12 DTrace(동적 추적) 설명서 의 print Action을 참조하십시오.

Kstats v2 프레임워크

kstats(커널 통계) v2 프레임워크는 이전 kstat 프레임워크와 비교할 때 더 나은 성능 및 많은 최적화를 제공합니다. 포함된 구성요소 중 새로운 중요 항목은 다음과 같습니다.

  • 커널 API – v2 kstats를 만들고 조작하는 기능을 제공합니다. Kstat은 고유한 URI를 사용해서 식별되며, kstat에 포함되는 이름-값 쌍과 kstat 모두에 대한 메타데이터를 포함합니다. 이 API를 사용해서 kstat이 보고 중인 값을 기술할 수 있습니다.

  • libkstat2 라이브러리 – 커널에 생성된 v2 kstat에 대한 액세스를 제공합니다. Kstat은 고유한 URI를 통해 조회되며, 해시맵으로 표시됩니다. 개발자는 특정 kstat URI 레벨에서 이벤트에 가입할 수 있으며, 해당 URI 트리의 항목 아래에 있는 kstat이 추가되거나 URI 트리의 항목 아래에서 제거될 때 알림을 얻을 수 있습니다.

  • /usr/bin/kstat2 유틸리티 – kstat에 대한 CLI 액세스를 제공합니다. 이 새로운 기능은 시스템에서 사용 가능한 kstat을 조사하고 명령줄에서 지정된 기준과 일치하는 통계를 보고합니다. 그런 다음 일치하는 각 통계가 해당 URI 및 실제 값과 함께 출력됩니다. 사람이 읽을 수 있는 형식, 구문 분석 가능한 형식 및 JSON(JavaScript Object Notation) 형식을 포함하여 다양한 출력 형식이 지원됩니다.

커널 API에 대한 자세한 내용은 kstat2_create(9F), kstat2_create_with_template(9F)kstat2_create_histogram(9F) 매뉴얼 페이지를 참조하십시오. libkstat2 라이브러리에 대한 자세한 내용은 libkstat2(3LIB)kstat2(3KSTAT2) 매뉴얼 페이지를 참조하십시오. kstat2 유틸리티에 대한 자세한 내용은 kstat2(8) 매뉴얼 페이지를 참조하십시오.

FMA 코어 파일 진단

Oracle Solaris 11.4에는 코어 파일 진단 기능이 포함되어 있습니다. 이 기능은 userland 코어 파일에서 기본 원격 측정항목 요약을 제공하고, 사용자 알림을 위한 FMA 경보를 발생시키고, 진단 코어 보존 정책 및 SMF 사례 연관을 제공합니다.

진단 코어 파일에는 컨텐츠 크기를 작게 유지하기 위해 필요한 컨텐츠만 포함됩니다. 코어 파일은 텍스트 요약 파일이 생성된 후 디스크 공간 소비를 줄이기 위해 삭제됩니다. 스택 진단과 같은 다른 새로운 기능과 함께 FMA를 사용하면 Oracle 데이터베이스의 요약 파일에 있는 스택에서 알려진 문제를 찾을 수 있습니다. 보존 정책을 사용하면 사용자가 coreadm 명령을 통해 진단 코어 정책을 설정할 수 있습니다. coreadm 명령은 또한 즉시 코어 삭제 또는 일정 시간 동안 특정 코어 개수 유지와 같은 기능을 제공합니다. 사례 연관 기능은 sw-diag-response 진단 엔진용입니다. 소프트웨어 서비스 오류로 이어지는 모든 코어 진단 경보는 각 이벤트의 스택 및 환경 데이터 세트와 함께 확인할 수 있습니다.

이제는 사용자가 진단 코어를 보다 세부적으로 제어할 수 있습니다. 소프트웨어 서비스가 올바르게 실행되지 않고 서비스가 중단되면, 관리자가 서비스 오류를 일으킨 모든 이벤트를 쉽고 빠르게 확인하고 실패한 프로세스 및 코드 실행에서 각 프로세스가 실패한 위치에 대한 정보를 더 효율적으로 확인할 수 있습니다.

자세한 내용은 coreadm(8) 매뉴얼 페이지를 참조하십시오.

pfiles 향상된 기능

Oracle Solaris 11.4에서 pfiles 명령은 코어 파일 이름을 인수로 사용해서 코어를 덤프하는 프로세스로 열린 파일 설명자에 대한 정보를 표시할 수 있습니다. 이 기능은 덤프의 근본 원인을 확인하기 위해 프로세스 코어 덤프를 디버깅할 때 추가적인 도움을 제공합니다.

이전의 Oracle Solaris 릴리스와 달리, Oracle Solaris 11.4에서 pfiles 명령은 실행 중인 대상 프로세스에서 열린 파일에서 데이터를 검색하는 동안 해당 프로세스를 더 이상 중지하지 않습니다.

자세한 내용은 proc(1) 매뉴얼 페이지를 참조하십시오.

fsstat을 통해 I/O 대기 시간 모니터링

fsstat 명령에는 read, writereaddir 작업에 대해 대기 시간 정보를 보고하는 새로운 –l 옵션이 포함되었습니다. 대기 시간 정보는 물리적 I/O 작업과 관련이 없으므로, 응용 프로그램에 표시된 것처럼 파일 시스템 성능을 나타냅니다. 이 기능을 통해 사용자는 파일 시스템 유형 또는 개별 파일 시스템에 대한 파일 시스템 대기 시간을 관찰할 수 있습니다. 이 기능은 파일 시스템 성능 문제를 해결할 때 유용합니다.

자세한 내용은 fsstat(8) 매뉴얼 페이지를 참조하십시오.

SCSI I/O 응답 시간 분포 통계

Oracle Solaris 11.4에서는 관찰 기능 향상을 위해 이제 SCSI I/O 응답 시간 또는 I/O 대기 시간 분포 정보가 제공됩니다. I/O 응답 시간 분포를 사용하면 응답 시간 특이값을 식별할 수 있습니다. 분포는 세 가지 서로 다른 x-스케일 옵션인 linear, log2-basedlog10-based를 사용하여 히스토그램에 저장됩니다. 분포는 iostat 명령을 사용하여 표시할 수 있습니다. 히스토그램 표시를 위해서는 –x–Y 옵션과 함께 –L 옵션이 추가되었습니다. 이 분포 정보는 성능 문제를 조사하는 데 사용할 수 있습니다.

자세한 내용은 sd(4D)iostat(8) 매뉴얼 페이지를 참조하십시오.