Changeset: 1062a9a5789d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1062a9a5789d
Modified Files:
gdk/gdk_utils.c
Branch: Feb2013
Log Message:
Backout changeset 3f5dfc65a739 30f7a1ca108a 4ca22f5177b6.
One select every 50ms is really not so bad.
diffs (66 lines):
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -329,7 +329,6 @@ volatile ATOMIC_TYPE GDK_nmallocs[MAX_BI
#ifdef ATOMIC_LOCK
static MT_Lock mbyteslock;
static MT_Lock GDKstoppedLock;
-static MT_Lock vmtrimLock;
#endif
size_t _MT_pagesize = 0; /* variable holding memory size */
@@ -930,13 +929,9 @@ GDKmunmap(void *addr, size_t size)
* Their value is turned into a blanc space.
*/
-#define CATNAP 500
int GDKrecovery = 0;
-#define VMTRIM_IDLE 0
-#define VMTRIM_BUSY 1
static MT_Id GDKvmtrim_id;
-static int vmtrimStatus = VMTRIM_BUSY; /* owned by vmtrim thread */
static void
GDKvmtrim(void *limit)
@@ -946,7 +941,6 @@ GDKvmtrim(void *limit)
(void) limit;
- ATOMIC_INIT(vmtrimLock, "GDKvmtrim");
do {
int t;
size_t rss;
@@ -954,12 +948,10 @@ GDKvmtrim(void *limit)
size_t cursize;
/* sleep using catnaps so we can exit in a timely fashion */
- for (t = highload ? CATNAP : 10 * CATNAP; t > 0; t -= CATNAP) {
- /* allow GDKexit to kill GDKvmtrim thread while
sleeping */
- (void) ATOMIC_COMP_SWAP(vmtrimStatus, VMTRIM_BUSY,
VMTRIM_IDLE,vmtrimLock, "GDKvmtrim");
- MT_sleep_ms(CATNAP);
- /* prevent from being killed while active */
- (void) ATOMIC_COMP_SWAP(vmtrimStatus, VMTRIM_IDLE,
VMTRIM_BUSY, vmtrimLock, "GDKvmtrim");
+ for (t = highload ? 500 : 5000; t > 0; t -= 50) {
+ MT_sleep_ms(50);
+ if (GDKexiting())
+ return;
}
rss = MT_getrss();
rssdiff = (ssize_t) rss - (ssize_t) prevrss;
@@ -1167,13 +1159,8 @@ GDKexit(int status)
{
MT_lock_set(&GDKthreadLock, "GDKexit");
if (ATOMIC_COMP_SWAP(GDKstopped, 0, 1, GDKstoppedLock, "GDKexit") == 0)
{
- /* we have to wait for possible concurrent vmtrim actions to
finish properly */
- if (GDKvmtrim_id) {
- if (ATOMIC_GET(vmtrimStatus, vmtrimLock, "GDKexit") ==
VMTRIM_IDLE)
- MT_kill_thread(GDKvmtrim_id);
- else
- MT_join_thread(GDKvmtrim_id);
- }
+ if (GDKvmtrim_id)
+ MT_join_thread(GDKvmtrim_id);
GDKnrofthreads = 0;
MT_lock_unset(&GDKthreadLock, "GDKexit");
MT_sleep_ms(50);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list