aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jitter/jitter.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/jitter/jitter.c b/jitter/jitter.c
index 2116bda..a93929e 100644
--- a/jitter/jitter.c
+++ b/jitter/jitter.c
@@ -43,6 +43,10 @@
#include <inttypes.h>
#include <signal.h>
#include <string.h>
+#define __USE_GNU
+#include <sched.h>
+
+#define DEFAULT_CORE 1
union timestampclock
{
@@ -129,8 +133,9 @@ void signalHandler(int signalno)
void showhelp()
{
printf("usage:\n");
- printf("taskset -c ./jitter [-l] [r] [-h] [-p $(pgrep perf)] [-t]\n");
+ printf("./jitter [-c <core id>] [-l] [r] [-h] [-p $(pgrep perf)] [-t]\n");
+ printf(" -c : pin jitter to core_id. Default core_id is %d\n", DEFAULT_CORE);
printf(" -r : Display update rate. Default is %d\n", displayUpdate);
printf(" -l : Loop count for code block. Default is %d\n", loopcount);
printf(" -p : perf_pid [run: perf record -S -C$CORENO -e intel_pt// -v on another window]\n");
@@ -167,17 +172,21 @@ int main(int argc, char* argv[])
uint64_t absoluteMin=MINVAL, absoluteMax=0, TransientMax=0, TransientMin=MINVAL;
unsigned int tmp=0;
int userinput;
+ uint32_t core_id = DEFAULT_CORE;
+ cpu_set_t cpuset;
#ifdef PROCESSOR_TRACE
pid_t perf_pid = -1;
int skip = 5, signaled = 0;
#endif
- printf("Linux Jitter testing program version 1.8\n");
+ printf("Linux Jitter testing program version 1.9\n");
- while ((userinput = getopt(argc, argv, "l:r:hp:t:i:")) != EOF)
+ while ((userinput = getopt(argc, argv, "c:l:r:hp:t:i:")) != EOF)
{
switch(userinput)
{
+ case 'c' : core_id = strtoul(optarg, (char**)NULL, 0);
+ break;
case 'h' : showhelp();
exit(0);
case 'l' : loopcount = strtoul(optarg, (char**)NULL, 0);
@@ -211,6 +220,7 @@ int main(int argc, char* argv[])
printf("The pragram will execute a dummy function %u times\n",loopcount);
printf("Display is updated every %u displayUpdate intervals\n",displayUpdate);
+ printf("Thread affinity will be set to core_id:%u\n", core_id);
displayInfo();
@@ -221,6 +231,11 @@ int main(int argc, char* argv[])
}
+ // set Thread affinity
+ CPU_ZERO(&cpuset);
+ CPU_SET(core_id, &cpuset);
+ sched_setaffinity(0, sizeof(cpuset), &cpuset);
+
printf("%s",title);
seedtime = TimeStampCounter(); // get a random value from timestamp