전원 관리 가이드
RHEL 7에서 전력 소비 관리 및 최적화
초록
1장. 개요 링크 복사링크가 클립보드에 복사되었습니다!
1.1. 전원 관리의 중요성 링크 복사링크가 클립보드에 복사되었습니다!
- 비용 절감을 위해 전체 전력 소비 감소
- 서버 및 컴퓨팅 센터의 열 감소
- 재충전, 공간, 케이블, 발전기 및 중단되지 않는 전원 공급 장치(UPS)를 포함한 보조 비용 감소
- 랩탑의 배터리 수명 연장
- 탄소 dioxide 출력 감소
- 그린 IT에 대한 정부 규정 또는 법적 요구 사항 충족(예: energy Star)
- 새로운 시스템에 대한 회사 지침 준수
- 질문 최적화 해야 합니까?
- 질문 최적화하려면 얼마나 해야 합니까?
- 질문 최적화로 인해 허용되지 않는 수준으로 시스템 성능이 저하될 수 있습니까?
- 질문 시스템 최적화에 소비된 시간과 리소스가 이익보다 크게 향상됩니까?
1.2. 전원 관리 기본 사항 링크 복사링크가 클립보드에 복사되었습니다!
유휴 CPU는 필요한 경우에만 작동해야 합니다.
Red Hat Enterprise Linux 6 이후 커널은 틱리스 를 실행하므로 이전의 주기적인 타이머 인터럽트가 온디맨드 인터럽트로 교체되었습니다. 따라서 유휴 CPU는 처리를 위해 새 작업이 대기열에 지정될 때까지 유휴 상태로 유지될 수 있으며 더 낮은 전원 상태를 입력한 CPU는 이러한 상태에 더 오래 남아 있을 수 있습니다. 그러나 불필요한 타이머 이벤트를 생성하는 애플리케이션이 있는 경우 이 기능의 이점을 오프셋할 수 있습니다. 볼륨 변경 또는 마우스 이동 확인과 같은 폴링 이벤트는 이러한 이벤트의 예입니다.
사용되지 않는 하드웨어 및 장치는 완전히 비활성화되어야 합니다.
이는 특히 일부를 이동하는 장치(예: 하드 디스크)에서 마찬가지입니다. 이 외에도 일부 애플리케이션에서는 사용되지 않지만 활성화된 장치 "오픈"을 남겨 둘 수 있습니다. 이 경우 커널은 장치가 사용 중인 것으로 가정하여 장치가 절전 상태로 전환되지 않도록 할 수 있습니다.
낮은 활동이 낮은 와트로 변환되어야 합니다.
그러나 대부분의 경우 최신 하드웨어 및 올바른 BIOS 구성에 따라 다릅니다. 이전 시스템 구성 요소는 현재 Red Hat Enterprise Linux 7에서 지원할 수 있는 새로운 기능 중 일부를 지원하지 않는 경우가 많습니다. 시스템에 대한 최신 공식 펌웨어를 사용하고 BIOS의 전원 관리 또는 장치 구성 섹션에서 전원 관리 기능이 활성화되어 있는지 확인합니다. 찾을 몇 가지 기능은 다음과 같습니다.
- SpeedStep
- PowerNow!
- Tyy't'Quiet
- ACPI (C state)
- Smart
다양한 형태의 CPU 상태 및 해당 효과
최신 CPU와 ACSPI( Advanced Configuration and Power Interface )는 서로 다른 전원 상태를 제공합니다. 세 가지 다른 상태는 다음과 같습니다.
- 수면 (C-states)
- 빈도 및 변동 (P-상태)P-state는 프로세서의 빈도와 출력 작동 지점을 설명합니다. 이는 P-state가 증가함에 따라 스케일링됩니다.
- heat 출력(T-상태 또는 "thermal 상태")
꺼진 머신은 가장 적은 양의 전원을 사용합니다.
이것이 잘 보일 수 있듯이, 실제로 전원을 저장하는 가장 좋은 방법 중 하나는 시스템을 끄는 것입니다. 예를 들어, 귀사는 시간당 중단 또는 출근 시 시스템을 켤 수 있는 지침으로 "녹색 IT"에 중점을 둔 기업 문화를 개발할 수 있습니다. 또한 Red Hat Enterprise Linux 7에서 제공하는 가상화 기술을 사용하여 여러 물리적 서버를 하나의 큰 서버로 통합하고 가상화할 수 있습니다.
2장. 전원 관리 감사 및 분석 링크 복사링크가 클립보드에 복사되었습니다!
2.1. 감사 및 분석 개요 링크 복사링크가 클립보드에 복사되었습니다!
2.2. PowerTOP 링크 복사링크가 클립보드에 복사되었습니다!
root
로 다음 명령을 실행합니다.
yum install powertop
~]# yum install powertop
root
로 다음 명령을 사용합니다.
powertop
~]# powertop
root
로 다음 명령을 실행합니다.
powertop --calibrate
~]# powertop --calibrate
systemctl disable servicename.service
~]# systemctl disable servicename.service
root
로 다음 명령을 실행합니다.
ps -awux | grep processname strace -p processid
~]# ps -awux | grep processname
~]# strace -p processid
C4
가 C3
보다 높습니다. CPU 사용량이 얼마나 잘 최적화되었는지를 나타내는 좋은 지표입니다. 레지던스는 시스템이 유휴 상태인 동안 C- 또는 P-상태가 가장 높은 90% 이상이어야 합니다.
그림 2.1. 운영의 PowerTOP
--html
옵션으로 PowerTOP 를 실행하여 HTML 보고서를 생성할 수도 있습니다. htmlfile.html 매개변수를 출력 파일에 필요한 이름으로 바꿉니다.
powertop --html=htmlfile.html
~]# powertop --html=htmlfile.html
--time
옵션을 사용하여 변경할 수 있습니다.
powertop --html=htmlfile.html --time=seconds
~]# powertop --html=htmlfile.html --time=seconds
2.3. Diskdevstat 및 netdevstat 링크 복사링크가 클립보드에 복사되었습니다!
root
로 다음 명령을 사용하여 SystemTap 으로 이러한 툴을 설치합니다.
yum install tuned-utils-systemtap kernel-debuginfo
~]# yum install tuned-utils-systemtap kernel-debuginfo
diskdevstat
~]# diskdevstat
netdevstat
~]# netdevstat
- update_interval
- 디스플레이 업데이트 사이의 시간(초)입니다. 기본값:
5
- total_duration
- 전체 실행에 대한 시간(초)입니다. 기본값:
86400
(1일) - display_histogram
- 실행 종료 시 수집된 모든 데이터에 대한 히스토그램에 플래그를 지정합니다.
- PID
- 애플리케이션의 프로세스 ID
- UID
- 애플리케이션이 실행되는 사용자 ID
- DEV
- I/O가 발생한 장치
- WRITE_CNT
- 총 쓰기 작업 수
- WRITE_MIN
- 연속 두 번의 쓰기에 걸린 가장 짧은 시간(초)
- WRITE_MAX
- 연속 두 번 쓰기에 가장 큰 시간 (초)
- WRITE_AVG
- 두 개의 연속 쓰기에 걸린 평균 시간(초)
- READ_CNT
- 총 읽기 작업 수
- READ_MIN
- 연속 두 개의 읽기에 사용된 가장 짧은 시간(초)
- READ_MAX
- 두 개의 연속 읽기에 걸린 가장 큰 시간 (초)
- READ_AVG
- 연속 두 읽기에 걸리는 평균 시간(초)
- 명령
- 프로세스의 이름
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND
2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma
2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd
2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd
0
보다 큰 WRITE_CNT
를 가지며 이는 측정 중에 어떤 형태의 쓰기를 수행했음을 의미합니다. 그 중 Microsoft 는 가장 큰 쓰기 작업을 수행했으며, 물론 쓰기 사이의 평균 시간이 가장 낮음에 따라 가장 큰 요인이었습니다. 따라서, 가상 시스템은 전력 효율이 없는 애플리케이션에 대해 우려하고 있는지 조사할 수 있는 최상의 후보입니다.
strace -p 2789
~]# strace -p 2789
2.4. 배터리 수명 도구 키트 링크 복사링크가 클립보드에 복사되었습니다!
-a
로 시작될 때 데스크탑 컴퓨터의 성능을 보고할 수도 있습니다.
사무실
워크로드는 텍스트를 작성하고, 그 안에 내용을 수정하며, 웹 사이트에 대해 동일한 작업을 수행합니다. PowerTOP 또는 다른 감사 또는 분석 도구를 결합한 BLTK를 실행하면 시스템이 유휴 상태일뿐만 아니라 시스템이 적극적으로 사용 중인 경우 효과가 있는지 테스트할 수 있습니다. 다른 설정에 대해 정확히 동일한 워크로드를 여러 번 실행할 수 있으므로 서로 다른 설정에 대한 결과를 비교할 수 있습니다.
yum install bltk
~]# yum install bltk
bltk workload options
~]$ bltk workload options
유휴
워크로드를 120초 동안 실행하려면 다음을 수행합니다.
bltk -I -T 120
~]$ bltk -I -T 120
-I
,--idle
- 시스템이 유휴 상태이며 다른 워크로드와 비교하기 위한 기준으로 사용됩니다.
-R
,--reader
- 문서 읽기 시뮬레이션(기본적으로 Firefox사용)
-P
,--player
- CD 또는 DVD 드라이브에서 멀티미디어 파일을 감시하는 시뮬레이션 (기본적으로 m Cryostat)
-O
,--office
- Cryostat .org 제품군을 사용하여 문서 편집 시뮬레이션
-a
,--ac-ignore
- AC 전원을 사용할 수 있는지 여부를 무시합니다(데스크탑 사용 필수)
-T number_of_seconds
,--time number_of_seconds
- 테스트를 실행하는 시간(초)입니다. 이 옵션을
유휴
워크로드와 함께 사용하십시오. -F filename
,--file filename
- 특정 워크로드에서 사용할 파일을 지정합니다(예: CD 또는 DVD 드라이브에 액세스하는 대신
플레이어
워크로드 파일) -W 애플리케이션
,--prog application
리더
워크로드에 대해 Firefox 이외의 브라우저와 같은 특정 워크로드에서 사용할 애플리케이션을 지정합니다.
bltk
도움말 페이지를 참조하십시오.
/etc/bltk.conf
구성 파일에 지정된 디렉터리에 생성되는 결과를 저장합니다. 기본적으로 ~/.bltk/workload.results.number/
. 예를 들어 ~/.bltk/ reader
.results.002/
디렉터리에는 리더 워크로드와 함께 세 번째 테스트의 결과가 있습니다(첫 번째 테스트는 번호가 매겨지지 않음). 결과는 여러 텍스트 파일에 분산됩니다. 이러한 결과를 읽기 쉬운 형식으로 축소하려면 다음을 실행합니다.
bltk_report path_to_results_directory
~]$ bltk_report path_to_results_directory
Report
라는 텍스트 파일이 표시됩니다. 대신 터미널 에뮬레이터에서 결과를 보려면 -o
옵션을 사용합니다.
bltk_report -o path_to_results_directory
~]$ bltk_report -o path_to_results_directory
2.5. tuned 링크 복사링크가 클립보드에 복사되었습니다!
udev
장치 관리자를 사용하여 연결된 장치를 모니터링하는 프로필 기반 시스템 튜닝 툴이며 시스템 설정을 정적 및 동적 튜닝할 수 있습니다. 동적 튜닝은 실험적인 기능이며 Red Hat Enterprise Linux 7에서 기본적으로 꺼져 있습니다.
balanced
프로필이 설정됩니다.
균형 잡힌
프로파일은 에너지 소비, 성능 및 대기 시간 균형을 유지합니다. 균형 잡힌
프로필을 사용하면 사용 가능한 최대 컴퓨팅 성능을 갖춘 작업을 빠르게 완료하면 일반적으로 컴퓨팅 성능이 적은 기간 동안 동일한 작업을 수행하는 것보다 적은 에너지가 필요합니다.
powersave
프로필을 사용하면 랩탑이 유휴 상태인 경우 배터리 수명이 연장되거나 계산되지 않은 작업만 수행할 수 있습니다. 이러한 작업을 위해 더 낮은 에너지 소비를 위한 더 높은 대기 시간이 일반적으로 허용되거나, IRC를 사용하거나, 간단한 웹 페이지를 보거나, 오디오 및 비디오 파일을 재생하는 등 작업을 신속하게 완료할 필요가 없습니다.
powertop2tuned 사용
powertop2tuned
유틸리티를 사용하면 PowerTOP 제안에서 사용자 정의 Tuned 프로필을 생성할 수 있습니다. PowerTOP 에 대한 자세한 내용은 2.2절. “PowerTOP” 을 참조하십시오.
powertop2tuned
유틸리티를 설치하려면 다음을 사용합니다.
yum install tuned-utils
~]# yum install tuned-utils
powertop2tuned new_profile_name
~]# powertop2tuned new_profile_name
powertop2tuned
는 /etc/tuned/
디렉터리에 프로필을 생성하고 현재 선택한 Tuned 프로필에서 사용자 지정 프로필을 기반으로 합니다. 보안상의 이유로 모든 PowerTOP 튜닝은 처음에 새 프로필에서 비활성화됩니다. 튜닝을 활성화하려면 /etc/tuned/profile_name/tuned.conf
파일에서 주석 처리를 해제합니다.
--enable
또는 -e
옵션을 사용하여 PowerTOP 에서 제안하는 대부분의 튜닝을 활성화하는 새 프로필을 생성할 수 있습니다. USB 자동 일시 중지와 같은 문제가 발생할 수 있는 특정 튜닝은 기본적으로 비활성화되어 수동으로 주석을 제거해야 합니다.
tuned-adm profile new_profile_name
~]# tuned-adm profile new_profile_name
powertop2tuned
가 지원하는 전체 옵션 목록은 다음을 사용합니다.
powertop2tuned --help
~]$ powertop2tuned --help
2.6. UPower 링크 복사링크가 클립보드에 복사되었습니다!
--enumerate
,-e
- 시스템의 각 전원 장치에 대한 오브젝트 경로를 표시합니다. 예를 들면 다음과 같습니다.
/org/freedesktop/UPower/devices/line_power_AC /org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/line_power_AC /org/freedesktop/UPower/devices/battery_BAT0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --dump
,-d
- 시스템의 모든 전원 장치에 대한 매개 변수를 표시합니다.
--wakeups
,-w
- 시스템의 CPU 발생을 표시합니다.
--monitor
,-m
- 전원 장치 변경, 예를 들어 AC 전원 공급의 연결 또는 연결 해제 또는 배터리 소모를 모니터링하는 시스템을 모니터링합니다. Ctrl+C 눌러 시스템 모니터링을 중지합니다.
--monitor-detail
- 전원 장치 변경, 예를 들어 AC 전원 공급의 연결 또는 연결 해제 또는 배터리 소모를 모니터링하는 시스템을 모니터링합니다.
--monitor-detail
옵션은--monitor
옵션보다 자세히 표시됩니다. Ctrl+C 눌러 시스템 모니터링을 중지합니다. --show-info object_path
,-i object_path
- 특정 오브젝트 경로에 사용 가능한 모든 정보를 표시합니다. 예를 들어 오브젝트 경로
/org/freedesktop/UPower/devices/batchtery_BAT0
로 표시되는 시스템의 배터리에 대한 정보를 얻으려면 다음을 실행합니다.upower -i /org/freedesktop/UPower/devices/battery_BAT0
~]$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. GNOME Power Manager 링크 복사링크가 클립보드에 복사되었습니다!
2.8. 감사용 기타 툴 링크 복사링크가 클립보드에 복사되었습니다!
- vmstat
- vmstat 는 프로세스, 메모리, 페이징, 블록 I/O, 트랩 및 CPU 활동에 대한 자세한 정보를 제공합니다. 이를 사용하여 시스템 전체에서 수행하는 작업과 사용 중인 위치를 자세히 살펴보십시오.
- iostat
- iostat 은 vmstat 와 유사하지만 블록 장치의 I/O에만 해당합니다. 또한 더 자세한 출력 및 통계도 제공합니다.
- blktrace
- blktrace 는 매우 자세한 블록 I/O 추적 프로그램입니다. 애플리케이션과 관련된 단일 블록으로 정보를 분리합니다. diskdevstat 와 함께 매우 유용합니다.
3장. 코어 인프라 및 메커니즘 링크 복사링크가 클립보드에 복사되었습니다!
3.1. CPU 유휴 상태 링크 복사링크가 클립보드에 복사되었습니다!
- C0
- 작동 상태 또는 실행 상태입니다. 이 상태에서 CPU가 작동 중이며 전혀 유휴 상태가 아닙니다.
- C1, halt
- 프로세서가 명령을 실행하지 않고 일반적으로 더 낮은 전원 상태가 아닌 상태입니다. CPU는 지연 없이 거의 처리를 계속할 수 있습니다. C-States를 제공하는 모든 프로세서는 이 상태를 지원해야 합니다. Pentium 4 프로세서는 실제로 더 낮은 전력 소비를 위한 상태인 C1E라는 향상된 C1 상태를 지원합니다.
- C2, stop-Clock
- 이 프로세서에 대해 시계가 고정되지만 레지스터 및 캐시에 대한 전체 상태를 유지하므로 시계를 다시 시작하면 즉시 처리를 다시 시작할 수 있습니다. 이는 선택적 상태입니다.
- C3, 절전
- 프로세서가 실제로 잠자고 캐시를 최신 상태로 유지할 필요가 없는 상태입니다. 이 상태에서 시작하는 것은 이로 인해 C2보다 훨씬 오래 걸립니다. 이는 선택적 상태입니다.
cpupower idle-info
~]$ cpupower idle-info
3.2. CPUfreq 링크 복사링크가 클립보드에 복사되었습니다!
3.2.1. cpufreq 드라이버 링크 복사링크가 클립보드에 복사되었습니다!
ACPI CPUfreq
Intel P-state
max_perf_pct
: 사용 가능한 성능의 백분율로 표시된 드라이버에서 요청한 최대 P-상태를 제한합니다. no_turbo 설정으로 사용 가능한 P-state 성능을 줄일 수 있습니다(아래 참조).min_perf_pct
: min_perf_pct: 드라이버에서 요청한 최소 P-상태를 제한하고 최대 (no-turbo) 성능 수준의 백분율로 표시됩니다.no_turbo
: turbo 주파수 범위 아래에 P-state를 선택하도록 드라이버를 제한합니다.turbo_pct
: turbo 범위에 있는 하드웨어에서 지원하는 총 성능의 백분율을 표시합니다. 이 수는 turbo가 비활성화되었는지 여부에 관계없이 독립적입니다.num_pstates
: 하드웨어에서 지원하는 P 상태 수를 표시합니다. 이 수는 turbo가 비활성화되었는지 여부에 관계없이 독립적입니다.
intel_pstate=disable
intel_pstate=disable
3.2.2. cpufreq Cryostats 링크 복사링크가 클립보드에 복사되었습니다!
3.2.2.1. 코어 CPUfreq Cryostat 링크 복사링크가 클립보드에 복사되었습니다!
cpufreq_performance
Performance governor는 CPU에서 가능한 가장 높은 클럭 빈도를 사용하도록 강제 적용합니다. 이 빈도는 정적으로 설정되며 변경되지 않습니다. 이와 같이, 이 특정 관리자는 비용 절감 이점을 제공하지 않습니다. 워크로드가 많은 시간 동안만 적합하며 CPU가 거의 (또는 never) 유휴 상태가 아닌 경우에만 적합합니다.
3.2.2.2. 링크 복사링크가 클립보드에 복사되었습니다!
- 성능
- 성능
3.2.3. 링크 복사링크가 클립보드에 복사되었습니다!
cpupower frequency-info --governors
~]# cpupower frequency-info --governors
cpupower frequency-set --governor [governor]
~]# cpupower frequency-set --governor [governor]
cpupower -c 1-3,5 frequency-set --governor cpufreq_userspace
~]# cpupower -c 1-3,5 frequency-set --governor cpufreq_userspace
3.2.4. 링크 복사링크가 클립보드에 복사되었습니다!
echo 360000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 360000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3.3. 링크 복사링크가 클립보드에 복사되었습니다!
3.4. 링크 복사링크가 클립보드에 복사되었습니다!
- --perf-bias <0-15>
- --sched-mc <0|1|2>
- --sched-smt <0|1|2>
3.5. 링크 복사링크가 클립보드에 복사되었습니다!
3.6. 링크 복사링크가 클립보드에 복사되었습니다!
/sys/devices/system/cpu/power/
/sys/devices/system/cpu/power/
auto
autosuspend_delay_ms
3.7. 링크 복사링크가 클립보드에 복사되었습니다!
- default
- powersave
- performance
pcie_aspm=off
disables ASPM
journalctl -b | grep ASPM
~]$ journalctl -b | grep ASPM
3.8. 링크 복사링크가 클립보드에 복사되었습니다!
3.9. 링크 복사링크가 클립보드에 복사되었습니다!
3.10. 링크 복사링크가 클립보드에 복사되었습니다!
3.11. 링크 복사링크가 클립보드에 복사되었습니다!
3.12. RFKill 링크 복사링크가 클립보드에 복사되었습니다!
rfkill block 0
~]# rfkill block 0
rfkill block wifi
~]# rfkill block wifi
rfkill block all
~]# rfkill block all
4장. 사용 사례 링크 복사링크가 클립보드에 복사되었습니다!
4.1. 링크 복사링크가 클립보드에 복사되었습니다!
Webserver
웹 서버에는 네트워크 및 디스크 I/O가 필요합니다. 외부 연결 속도 100 Mbit/s에 따라 충분합니다. 시스템이 대부분 정적 페이지를 제공하는 경우 CPU 성능은 중요하지 않을 수 있습니다. 따라서 전원 관리 선택에는 다음이 포함될 수 있습니다.
- tuned 의 디스크 또는 네트워크 플러그인이 없습니다.
- ALPM이 켜졌습니다.
온 디맨드
관리자가 설정되었습니다.- 네트워크 카드가 100Mbit/s로 제한됩니다.
컴퓨팅 서버
컴퓨팅 서버에는 주로 CPU가 필요합니다. 전원 관리 선택 사항은 다음과 같습니다.
- 작업과 데이터 스토리지가 발생하는 위치에 따라 tuned 의 디스크 또는 네트워크 플러그인 또는 일괄 모드 시스템의 경우 완전히 활성화된 .
- 사용률에 따라
성능
관리자일 수 있습니다.
mailserver
메일 서버에는 대부분 디스크 I/O 및 CPU가 필요합니다. 전원 관리 선택 사항은 다음과 같습니다.
온 디맨드
관리자는 지난 몇 %의 CPU 성능이 중요하지 않기 때문에 켜졌습니다.- tuned 의 디스크 또는 네트워크 플러그인이 없습니다.
- 메일은 종종 내부적인 경우가 많기 때문에 네트워크 속도를 제한해서는 안되며 1Gbit/s 또는 10 Gbit/s 링크의 이점을 얻을 수 있습니다.
fileserver
fileserver 요구 사항은 mailserver와 유사하지만 사용된 프로토콜에 따라 더 많은 CPU 성능이 필요할 수 있습니다. 일반적으로 Samba 기반 서버에는 NFS보다 더 많은 CPU가 필요하며 NFS에는 일반적으로 iSCSI보다 많은 CPU가 필요합니다. 마찬가지로, 귀하는 온 디맨드
매니저를 사용할 수 있어야 합니다.
디렉터리 서버
일반적으로 디렉터리 서버에 디스크 I/O 요구 사항이 더 적습니다(특히 충분한 RAM이 탑재된 경우). 네트워크 I/O가 덜지지만 네트워크 대기 시간이 중요합니다. 연결 속도가 낮은 대기 시간 네트워크 튜닝을 고려할 수 있지만 특정 네트워크에 대해 신중하게 테스트해야 합니다.
4.2. 예 - 랩탑 링크 복사링크가 클립보드에 복사되었습니다!
- 사용하지 않는 모든 하드웨어를 비활성화하도록 시스템 BIOS를 구성합니다. 예를 들어 병렬 또는 직렬 포트, 카드 리더,ines, everyone 및 Bluetooth와 같은 몇 가지 가능한 후보 이름을 지정할 수 있습니다.
- 화면을 읽는 데 완전히 어울릴 필요가 없는 어두운 환경에서 디스플레이를 표시합니다. GNOME 데스크탑에서 gnome-power-manager 또는 xbacklight 또는 랩탑의 기능 키를 사용합니다.+ 설정, + + + → 를 사용하거나 명령줄의
온디맨드
관리자 사용(Red Hat Enterprise Linux 7에서 기본적으로 사용)- AC97 오디오 전원 활성화 (Red Hat Enterprise Linux 7에서 기본적으로 사용)
echo Y > /sys/module/snd_ac97_codec/parameters/power_save
~]# echo Y > /sys/module/snd_ac97_codec/parameters/power_save
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - USB 자동 중지를 활성화합니다.
for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done
~]# for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow USB 자동 일시 중지가 모든 USB 장치에서 제대로 작동하지 않습니다. - relatime을 사용하여 파일 시스템을 마운트합니다(Red Hat Enterprise Linux 7의 기본값).
mount -o remount,relatime mountpoint
~]# mount -o remount,relatime mountpoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 화면 밝기를
50
이하로 줄입니다. 예를 들면 다음과 같습니다.xbacklight -set 50
~]$ xbacklight -set 50
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 화면 유휴 상태에 대해 DPMS를 활성화합니다.
xset +dpms; xset dpms 0 0 300
~]$ xset +dpms; xset dpms 0 0 300
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Wi-Fi 비활성화:
echo 1 > /sys/bus/pci/devices/*/rf_kill
~]# echo 1 > /sys/bus/pci/devices/*/rf_kill
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
부록 A. 개발자를 위한 팁 링크 복사링크가 클립보드에 복사되었습니다!
- 스레드 사용.
- 불필요한 CPU 발생 및 작동을 효율적으로 사용하지 않습니다. 잠길 필요가 있는 경우 한 번에 모든 작업을 수행하고 가능한 한 빨리 유휴 상태로 두십시오.
- 불필요하게
[f]sync()
사용. - 불필요한 활성 폴링 또는 짧은 일반 타임아웃을 사용합니다. 대신 이벤트로 돌아갑니다.
- wake-up을 효율적으로 사용하지 않습니다.
- 비효율적인 디스크 액세스. 디스크 액세스가 자주 발생하지 않도록 큰 버퍼를 사용합니다. 한 번에 하나의 큰 블록을 작성합니다.
- 타이머를 비효율적으로 사용합니다. 가능한 경우 애플리케이션(또는 시스템 전반에 걸쳐)을 그룹화합니다.
- 과도한 I/O, 전력 사용량 또는 메모리 사용량(메모리 누출 포함)
- 불필요한 계산을 수행합니다.
A.1. 스레드 사용 링크 복사링크가 클립보드에 복사되었습니다!
Python
Python은 Global Lock Interpreter 사용[1]따라서 스레드는 더 큰 I/O 작업에 대해서만 유용합니다. unladen-swallow [2] 더 빠른 Python 구현으로 코드를 최적화할 수 있습니다.
Perl
Perl 스레드는 원래 포크 없이 시스템에서 실행되는 애플리케이션을 위해 생성되었습니다(예: 32비트 Windows 운영 체제가 있는 시스템). Perl 스레드에서는 모든 단일 스레드(Copy On Write)에 대한 데이터가 복사됩니다. 사용자가 데이터 공유 수준을 정의할 수 있어야 하므로 데이터는 기본적으로 공유되지 않습니다. 데이터 공유의 경우 threads::shared 모듈을 포함해야 합니다. 그러나 데이터는 복사될 뿐만 아니라(쓰기 시 복사) 모듈은 데이터에 대한 연결된 변수도 생성하므로 더 많은 시간이 걸리며 속도가 더 느립니다. [3]
C
C 스레드는 동일한 메모리를 공유하고 각 스레드에는 자체 스택이 있으며 커널은 새 파일 설명자를 생성하고 새 메모리 공간을 할당할 필요가 없습니다. C는 더 많은 스레드에 대한 더 많은 CPU 지원을 실제로 사용할 수 있습니다. 따라서 스레드의 성능을 최대화하려면 C 또는 C++와 같은 하위 수준 언어를 사용합니다. 스크립팅 언어를 사용하는 경우 C 바인딩 작성을 고려하십시오. profilers를 사용하여 코드의 잘못된 부분을 식별합니다. [4]
A.2. Wake-ups 링크 복사링크가 클립보드에 복사되었습니다!
/proc/sys/fs/inotify/max_user_watches
에서 얻을 수 있으며 변경할 수는 있지만 권장되지 않습니다. 또한 inotify 가 실패하는 경우 코드가 다른 검사 방법으로 대체되어야 합니다. 즉, 일반적으로 소스 코드에서 #if #define
가 많은 발생을 의미합니다.
A.3. Fsync 링크 복사링크가 클립보드에 복사되었습니다!
Fsync
I/O 비용이 많이 드는 작업으로 알려져 있지만 완전히 사실이 아닙니다.
fsync
이라고 하며 파일 시스템 설정(데이터 정렬 모드가 있는 그대로 ext3) 때문에 아무 일도 없을 때 지연 시간이 길어졌습니다. 다른 프로세스가 대용량 파일을 동시에 복사하는 경우 시간이 오래 걸릴 수 있습니다(최대 30초).
fsync
이 전혀 사용되지 않은 다른 경우에는 ext4 파일 시스템으로 전환하면 문제가 발생했습니다. Ext3은 몇 초마다 메모리를 플러시하고 디스크에 저장하는 데이터 정렬 모드로 설정되었습니다. 그러나 ext4 및 laptop_mode를 사용하면 저장 간격이 길고 시스템이 예기치 않게 꺼지면 데이터가 손실될 수 있습니다. 이제 ext4가 패치되어 있지만 애플리케이션의 설계를 신중하게 고려하고 fsync
를 적절하게 사용해야 합니다.
부록 B. 버전 내역 링크 복사링크가 클립보드에 복사되었습니다!
고친 과정 | |||
---|---|---|---|
고침 2.2-9 | Mon Aug 05 2019 | ||
| |||
고침 2.2-6 | Mon Jul 24 2017 | ||
| |||
고침 2.2-5 | Tue Mar 21 2017 | ||
| |||
고침 2.0-2 | Fri Oct 14 2016 | ||
| |||
고침 2.0-1 | Wed 11 Nov 2015 | ||
| |||
고침 1-3 | Fri 19 Jun 2015 | ||
| |||
고침 1-2 | Wed 18 Feb 2015 | ||
| |||
고침 1-1 | Thu Dec 4 2014 | ||
| |||
고침 1.0-9 | Tue Jun 9 2014 | ||
| |||
고침 0.9-1 | Fri May 9 2014 | ||
| |||
고침 0.9-0 | Wed May 7 2014 | ||
| |||
고침 0.1-1 | Thu Jan 17 2013 | ||
|