Changeset 44336 in vbox for trunk/src/VBox/Frontends/VBoxBalloonCtrl
- Timestamp:
- Jan 23, 2013 1:51:33 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 83289
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModBallooning.cpp
r43738 r44336 5 5 6 6 /* 7 * Copyright (C) 2011-201 2Oracle Corporation7 * Copyright (C) 2011-2013 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 25 25 26 26 #include "VBoxWatchdogInternal.h" 27 #include <iprt/system.h> 27 28 28 29 using namespace com; … … 35 36 enum GETOPTDEF_BALLOONCTRL 36 37 { 37 GETOPTDEF_BALLOONCTRL_BALLOO INC = 2000,38 GETOPTDEF_BALLOONCTRL_BALLOONINC = 2000, 38 39 GETOPTDEF_BALLOONCTRL_BALLOONDEC, 39 40 GETOPTDEF_BALLOONCTRL_BALLOONLOWERLIMIT, 40 41 GETOPTDEF_BALLOONCTRL_BALLOONMAX, 42 GETOPTDEF_BALLOONCTRL_BALLOONSAFETY, 41 43 GETOPTDEF_BALLOONCTRL_TIMEOUTMS, 42 44 GETOPTDEF_BALLOONCTRL_GROUPS … … 49 51 { "--balloon-dec", GETOPTDEF_BALLOONCTRL_BALLOONDEC, RTGETOPT_REQ_UINT32 }, 50 52 { "--balloon-groups", GETOPTDEF_BALLOONCTRL_GROUPS, RTGETOPT_REQ_STRING }, 51 { "--balloon-inc", GETOPTDEF_BALLOONCTRL_BALLOO INC,RTGETOPT_REQ_UINT32 },53 { "--balloon-inc", GETOPTDEF_BALLOONCTRL_BALLOONINC, RTGETOPT_REQ_UINT32 }, 52 54 { "--balloon-interval", GETOPTDEF_BALLOONCTRL_TIMEOUTMS, RTGETOPT_REQ_UINT32 }, 53 55 { "--balloon-lower-limit", GETOPTDEF_BALLOONCTRL_BALLOONLOWERLIMIT, RTGETOPT_REQ_UINT32 }, 54 { "--balloon-max", GETOPTDEF_BALLOONCTRL_BALLOONMAX, RTGETOPT_REQ_UINT32 } 56 { "--balloon-max", GETOPTDEF_BALLOONCTRL_BALLOONMAX, RTGETOPT_REQ_UINT32 }, 57 { "--balloon-safety-margin", GETOPTDEF_BALLOONCTRL_BALLOONSAFETY, RTGETOPT_REQ_UINT32 } 55 58 }; 56 59 … … 62 65 static unsigned long g_ulMemoryBalloonMaxMB = 0; 63 66 static unsigned long g_ulMemoryBalloonLowerLimitMB = 0; 67 static unsigned long g_ulMemoryBalloonSafetyMB = _1K; 64 68 65 69 /** The ballooning module's payload. */ … … 112 116 if (ulCurrentDesktopBalloonSize + lBalloonDelta > ulMaxBalloonSize) 113 117 lBalloonDelta = (ulMaxBalloonSize - ulCurrentDesktopBalloonSize); 118 119 /* Limit the ballooning to the available memory, leaving some free. 120 * If anything fails clamp the delta to 0. */ 121 if (lBalloonDelta < 0) 122 { 123 uint64_t cbSafety = (uint64_t)g_ulMemoryBalloonSafetyMB * _1M; 124 uint64_t cbHostRamAvail = 0; 125 int vrc = RTSystemQueryAvailableRam(&cbHostRamAvail); 126 if (RT_SUCCESS(vrc)) 127 { 128 if (cbHostRamAvail < cbSafety) 129 lBalloonDelta = 0; 130 else if ((uint64_t)(-lBalloonDelta) > (cbHostRamAvail - cbSafety) / _1M) 131 lBalloonDelta = -(long)((cbHostRamAvail - cbSafety) / _1M); 132 } 133 else 134 lBalloonDelta = 0; 135 } 136 114 137 return lBalloonDelta; 115 138 } … … 373 396 break; 374 397 375 case GETOPTDEF_BALLOONCTRL_BALLOO INC:398 case GETOPTDEF_BALLOONCTRL_BALLOONINC: 376 399 g_ulMemoryBalloonIncrementMB = ValueUnion.u32; 377 400 break; … … 387 410 case GETOPTDEF_BALLOONCTRL_BALLOONMAX: 388 411 g_ulMemoryBalloonMaxMB = ValueUnion.u32; 412 break; 413 414 case GETOPTDEF_BALLOONCTRL_BALLOONSAFETY: 415 g_ulMemoryBalloonSafetyMB = ValueUnion.u32; 389 416 break; 390 417
Note:
See TracChangeset
for help on using the changeset viewer.