Skip to content

Commit 5fcc782

Browse files
Merge pull request #267 from sergey-dryabzhinsky/issue-266-stop-cache-of-cpu-cores
Issue 266 stop cache of cpu cores
2 parents a2d930b + 31c374c commit 5fcc782

File tree

4 files changed

+55
-6
lines changed

4 files changed

+55
-6
lines changed

src/python-zstd.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,14 @@ static PyObject *py_zstd_set_cpu_cores_cache_ttl(PyObject* self, PyObject *args)
474474
return Py_BuildValue("i", 0);
475475
}
476476

477+
static PyObject *py_zstd_stop_cpu_cores_cache(PyObject* self, PyObject *args)
478+
{
479+
UNUSED(self);
480+
481+
UTIL_stopCpuCoresCache();
482+
return Py_BuildValue("i", 0);
483+
}
484+
477485
/**
478486
* Returns ZSTD determined max threads count, int
479487
*/
@@ -554,6 +562,7 @@ static PyMethodDef ZstdMethods[] = {
554562
{"ZSTD_is_debug_error_enabled", py_zstd_is_debug_error_enabled, METH_NOARGS, NULL},
555563

556564
{"ZSTD_setCpuCoresCacheTTL", py_zstd_set_cpu_cores_cache_ttl,METH_VARARGS, NULL},
565+
{"ZSTD_stopCpuCoresCache", py_zstd_stop_cpu_cores_cache,METH_NOARGS, NULL},
557566

558567
{NULL, NULL, 0, NULL}
559568
};

src/util.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ typedef BOOL(WINAPI* LPFN_GLPI)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD);
3939

4040
int UTIL_countAvailableCores(void)
4141
{
42-
static int numLogicalCores = 0;
42+
static int numLogicalCores = 1;
4343
static time_t lastTimeCached = 0;
4444
time_t currTime = time(NULL);
4545
int cachettl = 60;
@@ -122,7 +122,7 @@ int UTIL_countAvailableCores(void)
122122
* see: man 3 sysctl */
123123
int UTIL_countAvailableCores(void)
124124
{
125-
static int32_t numLogicalCores = 0; /* apple specifies int32_t */
125+
static int32_t numLogicalCores = 1; /* apple specifies int32_t */
126126
static time_t lastTimeCached = 0;
127127
time_t currTime = time(NULL);
128128
int cachettl = 60;
@@ -153,7 +153,7 @@ int UTIL_countAvailableCores(void)
153153
* otherwise fall back on sysconf */
154154
int UTIL_countAvailableCores(void)
155155
{
156-
static int numLogicalCores = 0;
156+
static int numLogicalCores = 1;
157157
static time_t lastTimeCached = 0;
158158
time_t currTime = time(NULL);
159159
// int cachettl = 60;
@@ -257,7 +257,7 @@ int UTIL_countAvailableCores(void)
257257
* see: man 4 smp, man 3 sysctl */
258258
int UTIL_countAvailableCores(void)
259259
{
260-
static int numLogicalCores = 0; /* freebsd sysctl is native int sized */
260+
static int numLogicalCores = 1; /* freebsd sysctl is native int sized */
261261
static time_t lastTimeCached = 0;
262262
time_t currTime = time(NULL);
263263
// int cachettl = 60;
@@ -292,7 +292,7 @@ int UTIL_countAvailableCores(void)
292292
* see: man 3 sysconf */
293293
int UTIL_countAvailableCores(void)
294294
{
295-
static int numLogicalCores = 0;
295+
static int numLogicalCores = 1;
296296
static time_t lastTimeCached = 0;
297297
time_t currTime = time(NULL);
298298
// int cachettl = 60;
@@ -324,6 +324,11 @@ int UTIL_setCpuCoresCacheTTL(int cacheTTL){
324324
return 0;
325325
}
326326

327+
int UTIL_stopCpuCoresCache(void){
328+
util_cpuCoresCacheTTL = 0;
329+
return 0;
330+
}
331+
327332
#if defined (__cplusplus)
328333
}
329334
#endif

src/util.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ extern "C" {
6969
static int util_cpuCoresCacheTTL = 60;
7070
int UTIL_countAvailableCores(void);
7171
int UTIL_setCpuCoresCacheTTL(int cacheTTL);
72+
int UTIL_stopCpuCoresCache(void);
73+
7274

7375
#if defined (__cplusplus)
7476
}

tests/test_speed.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,39 @@ def test_check_speed(self):
9999
log.info("Check speed average = %6.2f Mb/sec" % (1.0*sum/1024/1024/wait,))
100100
log.info("diff Check memory usage = %6.2f kb" % (1.0*(endMemoryUsage-beginMemoryUsage)/1024,))
101101

102+
def test_cpu_cores_cache_default_speed(self):
103+
wait = 70
104+
log.info("\nWait %d seconds..." % wait)
105+
ops = 0
106+
tbegin = time()
107+
beginMemoryUsage=get_real_memory_usage()
108+
log.info("begin Check memory usage= %6.2f kb" % (1.0*beginMemoryUsage/1024,))
109+
while time()-tbegin<wait:
110+
cores = zstd.ZSTD_threads_count()
111+
ops+=1
112+
113+
endMemoryUsage=get_real_memory_usage()
114+
log.info("end Check memory usage = %6.2f kb" % (1.0*endMemoryUsage/1024,))
115+
log.info("Check cache use speed(default) average = %6.2f Ops/sec" % (1.0*ops/wait,))
116+
log.info("diff Check memory usage = %6.2f kb" % (1.0*(endMemoryUsage-beginMemoryUsage)/1024,))
117+
118+
def test_cpu_cores_cache_none_speed(self):
119+
wait = 70
120+
log.info("\nWait %d seconds..." % wait)
121+
ops = 0
122+
tbegin = time()
123+
beginMemoryUsage=get_real_memory_usage()
124+
zstd.ZSTD_stopCpuCoresCache()
125+
log.info("begin Check memory usage= %6.2f kb" % (1.0*beginMemoryUsage/1024,))
126+
while time()-tbegin<wait:
127+
cores = zstd.ZSTD_threads_count()
128+
ops+=1
129+
130+
endMemoryUsage=get_real_memory_usage()
131+
log.info("end Check memory usage = %6.2f kb" % (1.0*endMemoryUsage/1024,))
132+
log.info("Check cache use speed(0) average = %6.2f Ops/sec" % (1.0*ops/wait,))
133+
log.info("diff Check memory usage = %6.2f kb" % (1.0*(endMemoryUsage-beginMemoryUsage)/1024,))
134+
102135
def test_cpu_cores_cache_60_speed(self):
103136
wait = 70
104137
log.info("\nWait %d seconds..." % wait)
@@ -114,7 +147,7 @@ def test_cpu_cores_cache_60_speed(self):
114147
log.info("end Check memory usage = %6.2f kb" % (1.0*endMemoryUsage/1024,))
115148
log.info("Check cache use speed(60) average = %6.2f Ops/sec" % (1.0*ops/wait,))
116149
log.info("diff Check memory usage = %6.2f kb" % (1.0*(endMemoryUsage-beginMemoryUsage)/1024,))
117-
150+
118151
def test_cpu_cores_cache_01_speed(self):
119152
wait = 70
120153
log.info("\nWait %d seconds..." % wait)

0 commit comments

Comments
 (0)