summaryrefslogtreecommitdiffstats
path: root/media/mediaserver
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2016-05-13 10:39:23 -0700
committerThe Android Automerger <android-build@google.com>2016-05-27 11:30:16 -0700
commit6fdee2a83432b3b150d6a34f231c4e2f7353c01e (patch)
tree89d951e6e825431c6e0fe175d1d5df0ae31ec3e1 /media/mediaserver
parente7142a0703bc93f75e213e96ebc19000022afed9 (diff)
downloadframeworks_av-6fdee2a83432b3b150d6a34f231c4e2f7353c01e.zip
frameworks_av-6fdee2a83432b3b150d6a34f231c4e2f7353c01e.tar.gz
frameworks_av-6fdee2a83432b3b150d6a34f231c4e2f7353c01e.tar.bz2
limit mediaserver memory
Limit mediaserver using rlimit, to prevent it from bringing down the system via the low memory killer. Default max is 65% of total RAM, but can be customized via system property. Bug: 28471206 Bug: 28615448 Change-Id: Ic84137435d1ef0a6883e9789a4b4f399e4283f05
Diffstat (limited to 'media/mediaserver')
-rw-r--r--media/mediaserver/Android.mk1
-rw-r--r--media/mediaserver/main_mediaserver.cpp6
2 files changed, 7 insertions, 0 deletions
diff --git a/media/mediaserver/Android.mk b/media/mediaserver/Android.mk
index b6de0d9..7e017b9 100644
--- a/media/mediaserver/Android.mk
+++ b/media/mediaserver/Android.mk
@@ -37,6 +37,7 @@ LOCAL_STATIC_LIBRARIES := \
LOCAL_C_INCLUDES := \
frameworks/av/media/libmediaplayerservice \
+ frameworks/av/media/libmedia \
frameworks/av/services/medialog \
frameworks/av/services/audioflinger \
frameworks/av/services/audiopolicy \
diff --git a/media/mediaserver/main_mediaserver.cpp b/media/mediaserver/main_mediaserver.cpp
index 4a485ed..8cc9508 100644
--- a/media/mediaserver/main_mediaserver.cpp
+++ b/media/mediaserver/main_mediaserver.cpp
@@ -36,6 +36,7 @@
#include "MediaPlayerService.h"
#include "ResourceManagerService.h"
#include "service/AudioPolicyService.h"
+#include "MediaUtils.h"
#include "SoundTriggerHwService.h"
#include "RadioService.h"
@@ -43,6 +44,11 @@ using namespace android;
int main(int argc __unused, char** argv)
{
+ limitProcessMemory(
+ "ro.media.maxmem", /* property that defines limit */
+ SIZE_MAX, /* upper limit in bytes */
+ 65 /* upper limit as percentage of physical RAM */);
+
signal(SIGPIPE, SIG_IGN);
char value[PROPERTY_VALUE_MAX];
bool doLog = (property_get("ro.test_harness", value, "0") > 0) && (atoi(value) == 1);