From d9b1437b9051e9f394c78a9d464b82e53746636b Mon Sep 17 00:00:00 2001 From: opcm Date: Tue, 5 Dec 2023 13:22:54 +0100 Subject: [PATCH 1/4] compile pcm-sensor-server on OSX --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 107136e6..050c5398 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,8 +16,8 @@ endif() if(UNIX) # LINUX, FREE_BSD, APPLE if (NOT APPLE) set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS} -s") # --strip-unneeded for packaging - list(APPEND PROJECT_NAMES pcm-sensor-server) endif() + list(APPEND PROJECT_NAMES pcm-sensor-server) list(APPEND PROJECT_NAMES pcm-sensor) # libpcm.a From 148b5caf6b8179e624125b81e0d3350d0b944820 Mon Sep 17 00:00:00 2001 From: opcm Date: Tue, 5 Dec 2023 13:37:12 +0100 Subject: [PATCH 2/4] sched_ calls are not supported on OSX --- src/pcm-sensor-server.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pcm-sensor-server.cpp b/src/pcm-sensor-server.cpp index 6e7aa692..bad816fd 100644 --- a/src/pcm-sensor-server.cpp +++ b/src/pcm-sensor-server.cpp @@ -3397,6 +3397,7 @@ int mainThrows(int argc, char * argv[]) { } #endif +#ifndef __APPLE__ if ( useRealtimePriority ) { int priority = sched_get_priority_min( SCHED_RR ); if ( priority == -1 ) { @@ -3414,6 +3415,7 @@ int mainThrows(int argc, char * argv[]) { } } } +#endif pid_t pid; if ( daemonMode ) From 60935cee303d5b411502f98216a68410f9d1e0ae Mon Sep 17 00:00:00 2001 From: opcm Date: Tue, 5 Dec 2023 13:55:10 +0100 Subject: [PATCH 3/4] address a clang check warning --- src/pcm-sensor-server.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pcm-sensor-server.cpp b/src/pcm-sensor-server.cpp index bad816fd..866c9724 100644 --- a/src/pcm-sensor-server.cpp +++ b/src/pcm-sensor-server.cpp @@ -3181,7 +3181,9 @@ void printHelpText( std::string const & programName ) { std::cout << " -p portnumber : Run on port (default port is " << DEFAULT_HTTP_PORT << ")\n"; std::cout << " -r|--reset : Reset programming of the performance counters.\n"; std::cout << " -D|--debug level : level = 0: no debug info, > 0 increase verbosity.\n"; +#ifndef __APPLE__ std::cout << " -R|--real-time : If possible the daemon will run with real time\n"; +#endif std::cout << " priority, could be useful under heavy load to \n"; std::cout << " stabilize the async counter fetching.\n"; #if defined (USE_SSL) @@ -3209,7 +3211,9 @@ int mainThrows(int argc, char * argv[]) { bool useSSL = false; #endif bool forcedProgramming = false; +#ifndef __APPLE__ bool useRealtimePriority = false; +#endif bool forceRTMAbortMode = false; unsigned short port = 0; unsigned short debug_level = 0; @@ -3270,10 +3274,12 @@ int mainThrows(int argc, char * argv[]) { throw std::runtime_error( "main: Error no debug level argument given" ); } } +#ifndef __APPLE__ else if ( check_argument_equals( argv[i], {"-R", "--real-time"} ) ) { useRealtimePriority = true; } +#endif else if ( check_argument_equals( argv[i], {"--help", "-h", "/h"} ) ) { printHelpText( argv[0] ); From d2ff40fc41026775080dfdad0e89f00f39b1ad70 Mon Sep 17 00:00:00 2001 From: opcm Date: Sun, 17 Dec 2023 18:38:47 +0000 Subject: [PATCH 4/4] add MSRH hndle to OS thread on OSX --- src/cpucounters.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/cpucounters.cpp b/src/cpucounters.cpp index e2b4609e..d842a04f 100644 --- a/src/cpucounters.cpp +++ b/src/cpucounters.cpp @@ -1602,7 +1602,12 @@ void PCM::printSystemTopology() const bool PCM::initMSR() { -#ifndef __APPLE__ +#ifdef __APPLE__ + for (size_t i=0; i < MSR.size(); ++i) + { + systemTopology->addMSRHandleToOSThread(MSR[i], (uint32)i); + } +#else try { for (int i = 0; i < (int)num_cores; ++i)