Electroneum
Loading...
Searching...
No Matches
performance_utils.h File Reference
#include <iostream>
#include <boost/config.hpp>
Include dependency graph for performance_utils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void set_process_affinity (int core)
void set_thread_high_priority ()

Function Documentation

◆ set_process_affinity()

void set_process_affinity ( int core)

Definition at line 42 of file performance_utils.h.

43{
44#if defined (__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__sun)
45 return;
46#elif defined(BOOST_WINDOWS)
47 DWORD_PTR mask = 1;
48 for (int i = 0; i < core; ++i)
49 {
50 mask <<= 1;
51 }
52 ::SetProcessAffinityMask(::GetCurrentProcess(), core);
53#elif defined(BOOST_HAS_PTHREADS)
54 cpu_set_t cpuset;
55 CPU_ZERO(&cpuset);
56 CPU_SET(core, &cpuset);
57 if (0 != ::pthread_setaffinity_np(::pthread_self(), sizeof(cpuset), &cpuset))
58 {
59 std::cout << "pthread_setaffinity_np - ERROR" << std::endl;
60 }
61#endif
62}
Here is the caller graph for this function:

◆ set_thread_high_priority()

void set_thread_high_priority ( )

Definition at line 64 of file performance_utils.h.

65{
66#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(_NetBSD_) || defined(__sun)
67 return;
68#elif defined(BOOST_WINDOWS)
69 ::SetPriorityClass(::GetCurrentProcess(), HIGH_PRIORITY_CLASS);
70#elif defined(BOOST_HAS_PTHREADS)
71 pthread_attr_t attr;
72 int policy = 0;
73 int max_prio_for_policy = 0;
74
75 ::pthread_attr_init(&attr);
76 ::pthread_attr_getschedpolicy(&attr, &policy);
77 max_prio_for_policy = ::sched_get_priority_max(policy);
78
79 if (0 != ::pthread_setschedprio(::pthread_self(), max_prio_for_policy))
80 {
81 std::cout << "pthread_setschedprio - ERROR" << std::endl;
82 }
83
84 ::pthread_attr_destroy(&attr);
85#endif
86}
Here is the caller graph for this function: