Bug #852 ยป cpu_sets.diff
| suricata-1.4.3/src/util-affinity.h Sat Jul 6 15:30:49 2013 | ||
|---|---|---|
|
typedef struct ThreadsAffinityType_ {
|
||
|
char *name;
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
|
cpu_set_t cpu_set;
|
||
|
#endif
|
||
|
uint8_t mode_flag;
|
||
|
int prio;
|
||
|
int nb_threads;
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
|
cpu_set_t lowprio_cpu;
|
||
|
cpu_set_t medprio_cpu;
|
||
|
cpu_set_t hiprio_cpu;
|
||
|
-- suricata-1.4.3/src/util-affinity.c.orig Tue Jul 9 13:05:13 2013
|
||
|
++ suricata-1.4.3/src/util-affinity.c Tue Jul 9 13:08:23 2013
|
||
| ... | ... | |
|
return NULL;
|
||
|
}
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined(__sun)
|
||
|
static void AffinitySetupInit()
|
||
|
{
|
||
|
int i, j;
|
||
| ... | ... | |
|
break;
|
||
|
}
|
||
|
}
|
||
|
#endif /* OS_WIN32 and __OpenBSD__ */
|
||
|
#endif /* OS_WIN32 and __OpenBSD__ and __sun */
|
||
|
/**
|
||
|
* \brief Extract cpu affinity configuration from current config file
|
||
| ... | ... | |
|
void AffinitySetupLoadFromConfig()
|
||
|
{
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined(__sun)
|
||
|
ConfNode *root = ConfGetNode("threading.cpu-affinity");
|
||
|
ConfNode *affinity;
|
||
| ... | ... | |
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif /* OS_WIN32 and __OpenBSD__ */
|
||
|
#endif /* OS_WIN32 and __OpenBSD__ and __sun */
|
||
|
}
|
||
|
/**
|
||
| ... | ... | |
|
{
|
||
|
int ncpu = 0;
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined(__sun)
|
||
|
int iter = 0;
|
||
|
SCMutexLock(&taf->taf_mutex);
|
||
|
ncpu = taf->lcpu;
|
||
| ... | ... | |
|
taf->lcpu = 0;
|
||
|
SCMutexUnlock(&taf->taf_mutex);
|
||
|
SCLogInfo("Setting affinity on CPU %d", ncpu);
|
||
|
#endif /* OS_WIN32 and __OpenBSD__ */
|
||
|
#endif /* OS_WIN32 and __OpenBSD__ and __sun */
|
||
|
return ncpu;
|
||
|
}
|
||
|
-- suricata-1.4.3/src/tm-threads.c.orig Mon Jul 8 15:45:34 2013
|
||
|
++ suricata-1.4.3/src/tm-threads.c Mon Jul 8 15:50:00 2013
|
||
| ... | ... | |
|
* Thread management functions.
|
||
|
*/
|
||
|
#if defined(__sun)
|
||
|
#include <pthread.h>
|
||
|
#endif
|
||
|
#include "suricata-common.h"
|
||
|
#include "suricata.h"
|
||
|
#include "stream.h"
|
||
| ... | ... | |
|
return NULL;
|
||
|
}
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
|
static int SetCPUAffinitySet(cpu_set_t *cs) {
|
||
|
#if defined OS_FREEBSD
|
||
|
int r = cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID,
|
||
| ... | ... | |
|
*/
|
||
|
static int SetCPUAffinity(uint16_t cpuid)
|
||
|
{
|
||
|
#if defined __OpenBSD__
|
||
|
#if defined __OpenBSD__ || defined __sun
|
||
|
return 0;
|
||
|
#else
|
||
|
int cpu = (int)cpuid;
|
||
| ... | ... | |
|
if (tv->thread_setup_flags & THREAD_SET_AFFINITY) {
|
||
|
SCLogInfo("Setting affinity for \"%s\" Module to cpu/core "
|
||
|
"%"PRIu16", thread id %lu", tv->name, tv->cpu_affinity,
|
||
|
#if defined(__sun)
|
||
|
pthread_self());
|
||
|
#else
|
||
|
SCGetThreadIdLong());
|
||
|
#endif
|
||
|
SetCPUAffinity(tv->cpu_affinity);
|
||
|
}
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
|
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
|
if (tv->thread_setup_flags & THREAD_SET_PRIORITY)
|
||
|
TmThreadSetPrio(tv);
|
||
|
if (tv->thread_setup_flags & THREAD_SET_AFFTYPE) {
|
||