동적으로 연결된 라이브러리 library.so
을 사용하는 샘플 응용 프로그램이 있습니다. top 명령으로 샘플 애플리케이션의 CPU 사용량을 측정했습니다. 하지만 샘플 앱과 초당 library.so
의 CPU 사용량을 보여줍니다. 하지만 난 단지 library.so
의 CPU 사용량을보고 싶습니다. 이 작업을 수행 할 여지가 있습니까? 나는 htop로 그것의 달성을 들었지만 어떻게 찾을 수 없었습니다. 트리보기를 사용했지만 여러 프로세스가 샘플 앱 프로세스로 표시됩니다. 나는 어느 것이 library.so
인지 이해할 수 없었다. 나는 centos 5.11을 사용하고있다. 커널 버전 3.2.63-1.el5.elrepo.동적으로 링크 된 라이브러리의 초당 CPU 사용량을 측정하십시오.
0
A
답변
0
라이브러리가 프로그램의 일부로 간주되는 한 가지 방법은 코드 내에 측정을 구현하는 것입니다. 다음 최소한의 예는 가상 라이브러리에서 하나의 기능을 실행하는 C++ (11)에 구현됩니다
#include <chrono>
#include <iostream>
#include <hypothetical>
int main() {
using namespace std::chrono;
system_clock systemClock;
system_clock::time_point startingTime{systemClock.now()};
hypothetical::function();
system_clock::duration libraryTime{systemClock.now() - startingTime};
std::cout << "Hypothetical library took " << duration_cast<seconds>(libraryTime).count() << " seconds to run.\n";
return 0;
}
당신은 당신의 프로그램이 라이브러리에서 호출하는 모든 기능이 확장해야합니다.
+0
답장을 보내 주셔서 감사합니다. 그러나 라이브러리로서 실현 불가능한 것은 많은 다른 기능 (차단/비 차단) 호출을합니다. – Tahlil
공유 라이브러리가 별도의 프로세스임을 암시하는 것처럼 보입니다. 그렇지 않습니다. –
그러면'library.so'에 대해서만 어떻게 CPU 사용량을 얻을 수 있습니까? 다른 방법이 없습니까? 프로파일 러 사용을 시도했습니다. 그러나 그들은 내가 필요로하지 않는 많은 정보를 제공합니다. 나에게 상세한 보고서를 제공하지는 않지만 공유 라이브러리의 CPU 사용량 만 제공하는 프로파일 러가 있습니까? 감사. – Tahlil
HTOP에서 샘플 앱과 이름이 같은 10 개의 PID를 볼 수 있습니다. 단일 프로세스 인 경우 다른 PID를 갖는 이유는 무엇입니까? 아니면 스레드 ID입니까? – Tahlil