Make minimum gc sleep time tunnable
Test: check smart idle maint log of StorageManagerService Signed-off-by: Daeho Jeong <daehojeong@google.com> Change-Id: I5a70e4ec2ca895551b6446a9dfd4bb5003a3fbd0
This commit is contained in:
parent
d99898496f
commit
3fd33ece35
5 changed files with 10 additions and 9 deletions
|
@ -86,7 +86,6 @@ static const int DIRTY_SEGMENTS_THRESHOLD = 100;
|
||||||
static const int GC_TIMEOUT_SEC = 420;
|
static const int GC_TIMEOUT_SEC = 420;
|
||||||
static const int DEVGC_TIMEOUT_SEC = 120;
|
static const int DEVGC_TIMEOUT_SEC = 120;
|
||||||
static const int KBYTES_IN_SEGMENT = 2048;
|
static const int KBYTES_IN_SEGMENT = 2048;
|
||||||
static const int MIN_GC_URGENT_SLEEP_TIME = 500;
|
|
||||||
static const int ONE_MINUTE_IN_MS = 60000;
|
static const int ONE_MINUTE_IN_MS = 60000;
|
||||||
static const int GC_NORMAL_MODE = 0;
|
static const int GC_NORMAL_MODE = 0;
|
||||||
static const int GC_URGENT_MID_MODE = 3;
|
static const int GC_URGENT_MID_MODE = 3;
|
||||||
|
@ -531,7 +530,7 @@ int32_t GetStorageLifeTime() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float dirtyReclaimRate,
|
void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float dirtyReclaimRate,
|
||||||
float reclaimWeight, int32_t gcPeriod) {
|
float reclaimWeight, int32_t gcPeriod, int32_t minGCSleepTime) {
|
||||||
std::list<std::string> paths;
|
std::list<std::string> paths;
|
||||||
bool needGC = true;
|
bool needGC = true;
|
||||||
int32_t sleepTime;
|
int32_t sleepTime;
|
||||||
|
@ -593,8 +592,8 @@ void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float
|
||||||
needGC = false;
|
needGC = false;
|
||||||
} else {
|
} else {
|
||||||
sleepTime = gcPeriod * ONE_MINUTE_IN_MS / neededSegments;
|
sleepTime = gcPeriod * ONE_MINUTE_IN_MS / neededSegments;
|
||||||
if (sleepTime < MIN_GC_URGENT_SLEEP_TIME) {
|
if (sleepTime < minGCSleepTime) {
|
||||||
sleepTime = MIN_GC_URGENT_SLEEP_TIME;
|
sleepTime = minGCSleepTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ int RunIdleMaint(bool needGC, const android::sp<android::os::IVoldTaskListener>&
|
||||||
int AbortIdleMaint(const android::sp<android::os::IVoldTaskListener>& listener);
|
int AbortIdleMaint(const android::sp<android::os::IVoldTaskListener>& listener);
|
||||||
int32_t GetStorageLifeTime();
|
int32_t GetStorageLifeTime();
|
||||||
void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float dirtyReclaimRate,
|
void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float dirtyReclaimRate,
|
||||||
float reclaimWeight, int32_t gcPeriod);
|
float reclaimWeight, int32_t gcPeriod, int32_t minGCSleepTime);
|
||||||
void RefreshLatestWrite();
|
void RefreshLatestWrite();
|
||||||
int32_t GetWriteAmount();
|
int32_t GetWriteAmount();
|
||||||
|
|
||||||
|
|
|
@ -495,11 +495,12 @@ binder::Status VoldNativeService::getStorageLifeTime(int32_t* _aidl_return) {
|
||||||
binder::Status VoldNativeService::setGCUrgentPace(int32_t neededSegments,
|
binder::Status VoldNativeService::setGCUrgentPace(int32_t neededSegments,
|
||||||
int32_t minSegmentThreshold,
|
int32_t minSegmentThreshold,
|
||||||
float dirtyReclaimRate, float reclaimWeight,
|
float dirtyReclaimRate, float reclaimWeight,
|
||||||
int32_t gcPeriod) {
|
int32_t gcPeriod, int32_t minGCSleepTime) {
|
||||||
ENFORCE_SYSTEM_OR_ROOT;
|
ENFORCE_SYSTEM_OR_ROOT;
|
||||||
ACQUIRE_LOCK;
|
ACQUIRE_LOCK;
|
||||||
|
|
||||||
SetGCUrgentPace(neededSegments, minSegmentThreshold, dirtyReclaimRate, reclaimWeight, gcPeriod);
|
SetGCUrgentPace(neededSegments, minSegmentThreshold, dirtyReclaimRate, reclaimWeight, gcPeriod,
|
||||||
|
minGCSleepTime);
|
||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,8 @@ class VoldNativeService : public BinderService<VoldNativeService>, public os::Bn
|
||||||
binder::Status abortIdleMaint(const android::sp<android::os::IVoldTaskListener>& listener);
|
binder::Status abortIdleMaint(const android::sp<android::os::IVoldTaskListener>& listener);
|
||||||
binder::Status getStorageLifeTime(int32_t* _aidl_return);
|
binder::Status getStorageLifeTime(int32_t* _aidl_return);
|
||||||
binder::Status setGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold,
|
binder::Status setGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold,
|
||||||
float dirtyReclaimRate, float reclaimWeight, int32_t gcPeriod);
|
float dirtyReclaimRate, float reclaimWeight, int32_t gcPeriod,
|
||||||
|
int32_t minGCSleepTime);
|
||||||
binder::Status refreshLatestWrite();
|
binder::Status refreshLatestWrite();
|
||||||
binder::Status getWriteAmount(int32_t* _aidl_return);
|
binder::Status getWriteAmount(int32_t* _aidl_return);
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ interface IVold {
|
||||||
int getStorageLifeTime();
|
int getStorageLifeTime();
|
||||||
void setGCUrgentPace(int neededSegments, int minSegmentThreshold,
|
void setGCUrgentPace(int neededSegments, int minSegmentThreshold,
|
||||||
float dirtyReclaimRate, float reclaimWeight,
|
float dirtyReclaimRate, float reclaimWeight,
|
||||||
int gcPeriod);
|
int gcPeriod, int minGCSleepTime);
|
||||||
void refreshLatestWrite();
|
void refreshLatestWrite();
|
||||||
int getWriteAmount();
|
int getWriteAmount();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue