UNIX/SUN

[스크랩] prctl 명령 사용 (기본 리소스 제어값)

99iberty 2014. 9. 18. 11:13

 

http://docs.oracle.com/cd/E26925_01/html/E25830/rmctrls.task-33.html

 

prctl 명령 사용

prctl 명령을 사용하여 시스템의 활성 프로세스, 작업 또는 프로젝트와 연관된 리소스 제어에 대해 런타임 질의 및 수정을 수행합니다. 자세한 내용은 prctl(1) 매뉴얼 페이지를 참조하십시오.

기본 리소스 제어 값을 표시하기 위해 prctl 명령을 사용하는 방법

이 절차는 리소스 제어가 설정되거나 변경된 적이 없는 시스템에서 사용해야 합니다. /etc/system 파일 또는 project 데이터베이스에 기본값이 아닌 항목만 존재할 수 있습니다.

  • 실행 중인 현재 셸 등의 프로세스에서 prctl 명령을 사용합니다.
    # prctl $$
    process: 3320: bash
    NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
    process.max-port-events
            privileged      65.5K       -   deny                                 -
            system          2.15G     max   deny                                 -
    process.max-msg-messages
            privileged      8.19K       -   deny                                 -
            system          4.29G     max   deny                                 -
    process.max-msg-qbytes
            privileged      64.0KB      -   deny                                 -
            system          16.0EB    max   deny                                 -
    process.max-sem-ops
            privileged        512       -   deny                                 -
            system          2.15G     max   deny                                 -
    process.max-sem-nsems
            privileged        512       -   deny                                 -
            system          32.8K     max   deny                                 -
    process.max-address-space
            privileged      16.0EB    max   deny                                 -
            system          16.0EB    max   deny                                 -
    process.max-file-descriptor
            basic             256       -   deny                              3320
            privileged      65.5K       -   deny                                 -
            system          2.15G     max   deny                                 -
    process.max-core-size
            privileged      8.00EB    max   deny                                 -
            system          8.00EB    max   deny                                 -
    process.max-stack-size
            basic           10.0MB      -   deny                              3320
            privileged      32.0TB      -   deny                                 -
            system          32.0TB    max   deny                                 -
    process.max-data-size
            privileged      16.0EB    max   deny                                 -
            system          16.0EB    max   deny                                 -
    process.max-file-size
            privileged      8.00EB    max   deny,signal=XFSZ                     -
            system          8.00EB    max   deny                                 -
    process.max-cpu-time
            privileged      18.4Es    inf   signal=XCPU                          -
            system          18.4Es    inf   none                                 -
    task.max-cpu-time
            usage               0s   
            system          18.4Es    inf   none                                 -
    task.max-processes
            usage               2    
            system          2.15G     max   deny                                 -
    task.max-lwps
            usage               3    
            system          2.15G     max   deny                                 -
    project.max-contracts
            privileged      10.0K       -   deny                                 -
            system          2.15G     max   deny                                 -
    project.max-locked-memory
            usage               0B   
            system          16.0EB    max   deny                                 -
    project.max-port-ids
            privileged      8.19K       -   deny                                 -
            system          65.5K     max   deny                                 -
    project.max-shm-memory
            privileged       510MB      -   deny                                 -
            system          16.0EB    max   deny                                 -
    project.max-shm-ids
            privileged        128       -   deny                                 -
            system          16.8M     max   deny                                 -
    project.max-msg-ids
            privileged        128       -   deny                                 -
            system          16.8M     max   deny                                 -
    project.max-sem-ids
            privileged        128       -   deny                                 -
            system          16.8M     max   deny                                 -
    project.max-crypto-memory
            usage               0B   
            privileged       510MB      -   deny                                 -
            system          16.0EB    max   deny                                 -
    project.max-tasks
            usage               2    
            system          2.15G     max   deny                                 -
    project.max-processes
            usage               4    
            system          2.15G     max   deny                                 -
    project.max-lwps
            usage              11    
            system          2.15G     max   deny                                 -
    project.cpu-cap
            usage               0    
            system          4.29G     inf   deny                                 -
    project.cpu-shares
            usage               1    
            privileged          1       -   none                                 -
            system          65.5K     max   none                                 -
    zone.max-lofi
            usage               0    
            system          18.4E     max   deny                                 -
    zone.max-swap
            usage            180MB   
            system          16.0EB    max   deny                                 -
    zone.max-locked-memory
            usage               0B   
            system          16.0EB    max   deny                                 -
    zone.max-shm-memory
            system          16.0EB    max   deny                                 -
    zone.max-shm-ids
            system          16.8M     max   deny                                 -
    zone.max-sem-ids
            system          16.8M     max   deny                                 -
    zone.max-msg-ids
            system          16.8M     max   deny                                 -
    zone.max-processes
            usage              73    
            system          2.15G     max   deny                                 -
    zone.max-lwps
            usage             384    
            system          2.15G     max   deny                                 -
    zone.cpu-cap
            usage               0    
            system          4.29G     inf   deny                                 -
    zone.cpu-shares
            usage               1    
            privileged          1       -   none                                 -
            system          65.5K     max   none    

지정된 리소스 제어에 대한 정보를 표시하기 위해 prctl 명령을 사용하는 방법

  • 실행 중인 현재 셸에 대한 최대 파일 설명자를 표시합니다.
    # prctl -n process.max-file-descriptor $$
    process: 110453: -sh
    NAME    PRIVILEGE       VALUE    FLAG   ACTION       RECIPIENT
    process.max-file-descriptor
            basic             256       -   deny            11731
            privileged      65.5K       -   deny                 -
            system          2.15G     max   deny     

값을 임시로 변경하기 위해 prctl을 사용하는 방법

이 절차 예에서는 prctl 명령을 사용하여 권한이 있는 새 값을 임시로 추가하여 x-files 프로젝트에서 프로젝트별로 세 개를 초과하는 LWP를 사용하지 못하도록 합니다. 결과는 프로젝트의 각 작업에 대한 LWP 최대값을 설정하는 방법의 결과와 비슷합니다.

  1. 관리자로 전환합니다.
  2. newtask를 사용하여 x-files 프로젝트를 연결합니다.
    # newtask -p x-files
  3. id 명령을 -p 옵션과 함께 사용하여 올바른 프로젝트가 연결되어 있는지 확인합니다.
    # id -p
    uid=0(root) gid=1(other) projid=101(x-files)
  4. project.max-lwps에 대해 LWP 수를 세 개로 제한하는 권한이 있는 새 값을 추가합니다.
    # prctl -n project.max-lwps -t privileged -v 3 -e deny -i project x-files
  5. 결과를 확인합니다.
    # prctl -n project.max-lwps -i project x-files
    process: 111108: csh
    NAME    PRIVILEGE    VALUE    FLAG   ACTION            RECIPIENT
    project.max-lwps
            usage          203
            privileged    1000       -   deny                      -
            system       2.15G     max   deny                      -

리소스 제어 값을 낮추기 위해 prctl을 사용하는 방법

  1. 관리자로 전환합니다.
  2. prctl 명령을 -r 옵션과 함께 사용하여 process.max-file-descriptor 리소스 제어의 가장 낮은 값을 변경합니다.
    # prctl -n process.max-file-descriptor -r -v 128 $$

프로젝트에 대한 제어 값을 표시, 대체 및 확인하기 위해 prctl을 사용하는 방법

  1. 관리자로 전환합니다.
  2. group.staff 프로젝트에서 project.cpu-shares 값을 표시합니다.
    # prctl -n project.cpu-shares -i project group.staff
    project: 2: group.staff
    NAME    PRIVILEGE       VALUE    FLAG   ACTION     RECIPIENT
    project.cpu-shares
            usage               1
            privileged          1       -   none               -
            system          65.5K     max   none 
  3. 현재 project.cpu-shares1을 값 10으로 대체합니다.
    # prctl -n project.cpu-shares -v 10 -r -i project group.staff
  4. group.staff 프로젝트에서 project.cpu-shares 값을 표시합니다.
    # prctl -n project.cpu-shares -i project group.staff
    project: 2: group.staff
    NAME    PRIVILEGE       VALUE    FLAG   ACTION     RECIPIENT
    project.cpu-shares
            usage               1    
            privileged          1       -   none                                 -
            system          65.5K     max   none