From: apaz Date: Fri, 21 Apr 2023 18:48:06 +0000 (-0500) Subject: llama : fixed rlimit error message (#888) X-Git-Tag: gguf-v0.4.0~901 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=25d7abbd1f73582b7e0fdc422a936e8541c0780b;p=pkg%2Fggml%2Fsources%2Fllama.cpp llama : fixed rlimit error message (#888) --- diff --git a/llama_util.h b/llama_util.h index eba14656..acb207e6 100755 --- a/llama_util.h +++ b/llama_util.h @@ -21,6 +21,9 @@ #if defined(_POSIX_MAPPED_FILES) #include #endif + #if defined(_POSIX_MEMLOCK_RANGE) + #include + #endif #endif #endif @@ -303,8 +306,18 @@ struct llama_mlock { if (!mlock(addr, size)) { return true; } else { - fprintf(stderr, "warning: failed to mlock %zu-byte buffer (after previously locking %zu bytes): %s\n" MLOCK_SUGGESTION, - size, this->size, std::strerror(errno)); + char* errmsg = std::strerror(errno); + bool suggest = (errno == ENOMEM); + + // Check if the resource limit is fine after all + struct rlimit lock_limit; + if (suggest && getrlimit(RLIMIT_MEMLOCK, &lock_limit)) + suggest = false; + if (suggest && (lock_limit.rlim_max > lock_limit.rlim_cur + size)) + suggest = false; + + fprintf(stderr, "warning: failed to mlock %zu-byte buffer (after previously locking %zu bytes): %s\n%s", + size, this->size, errmsg, suggest ? MLOCK_SUGGESTION : ""); return false; } }