때때로 다음 오류로 인해 cpupower가 실행되지 않습니다.
cpupower: error while loading shared libraries: libcpupower.so.0: cannot open shared object file: No such file or directory
내 워크스테이션의 소스에서 마지막 cpupower 도구를 컴파일하고 설치했습니다.
Makefile 설치 명령은 /usr/local/lib에 라이브러리를 설치하고 그에 따라 LD_LIBRARY_PATH를 설정했습니다.
syl@WorkStation-T3500:~$ echo $LD_LIBRARY_PATH
:/usr/local/lib/
lrwxrwxrwx 1 root root 20 juin 26 11:46 libcpupower.so -> libcpupower.so.0.0.1
lrwxrwxrwx 1 root root 20 juin 26 11:46 libcpupower.so.0 -> libcpupower.so.0.0.1
-rwxr-xr-x 1 루트 루트 77048 juin 26 11:46 libcpupower.so.0.0.1 l
간단한 CPU전력 정보 쿼리가 잘 작동합니다.
syl@WorkStation-T3500:~$ cpupower frequency-info
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: Cannot determine or is not supported.
hardware limits: 1.20 GHz - 3.20 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 1.20 GHz and 3.20 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 1.20 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
그럼에도 불구하고 몇 가지 정책을 만들려고 하면 다음과 같은 일이 발생합니다.
syl@WorkStation-T3500:~$ sudo cpupower frequency-set --governor userspace
cpupower: error while loading shared libraries: libcpupower.so.0: cannot open shared object file: No such file or directory
이 이상한 문제에 대한 조언을 좀 여쭤봐도 될까요?
모두 제일 좋다
실뱅
답변1
LD_LIBRARY_PATH를 적절하게 초기화하는 것만으로는 충분하지 않다는 것을 알았습니다. lib 경로를 /etc/ld.so.conf.d/x86_64-linux-gnu.conf에 추가해야 했습니다:
syl@WorkStation-T3500:~$ sudo vim /etc/ld.so.conf.d/x86_64-linux-gnu.conf
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/loca/lib/
그 다음에:
syl@WorkStation-T3500:~$ sudo ldconfig
이렇게 하면 문제가 해결되지만 이해할 수 없습니다.
syl@WorkStation-T3500:~$ sudo cpupower frequency-set --governor userspace Setting cpu: 0
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
for example because of hardware which cannot be set to a specific frequency or because the userspace governor isn't loaded?
글쎄, 이 명령이 작동하지 않는 이유를 이해하는 것 외에는 아무것도 없습니다 ...
건배!
실뱅
답변2
드라이버는 정책 규제 자가 아닌 정책 규제자 intel_pstate
만 수락합니다 . 이 한도가 적용됩니다.powersave
performance
userspace
<kernel source>/drivers/cpufreq/intel_pstate.c
파일 에서 기능을 누르세요intel_pstate_verify_policy
:
static int intel_pstate_verify_policy(struct cpufreq_policy *policy)
{
struct cpudata *cpu = all_cpu_data[policy->cpu];
update_turbo_state();
cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
intel_pstate_get_max_freq(cpu));
if (policy->policy != CPUFREQ_POLICY_POWERSAVE &&
policy->policy != CPUFREQ_POLICY_PERFORMANCE)
return -EINVAL;
intel_pstate_adjust_policy_max(policy, cpu);
return 0;
}
거버너를 사용해야 하는 경우 userspace
다른 CPUFreq 드라이버로 전환해야 합니다.자세한 내용은 이 질문을 참조하세요.