https://www.mediawiki.org/wiki/Special:Code/MediaWiki/115086
Revision: 115086
Author: tstarling
Date: 2012-04-30 06:27:46 +0000 (Mon, 30 Apr 2012)
Log Message:
-----------
Provide LuaSandbox::getPeakMemoryUsage(), to give a more useful measure of how
close a script came to hitting the memory limit.
Modified Paths:
--------------
trunk/php/luasandbox/alloc.c
trunk/php/luasandbox/luasandbox.c
trunk/php/luasandbox/luasandbox_types.h
trunk/php/luasandbox/php_luasandbox.h
Modified: trunk/php/luasandbox/alloc.c
===================================================================
--- trunk/php/luasandbox/alloc.c 2012-04-30 03:39:51 UTC (rev 115085)
+++ trunk/php/luasandbox/alloc.c 2012-04-30 06:27:46 UTC (rev 115086)
@@ -72,6 +72,9 @@
}
alloc->memory_usage += nsize - osize;
+ if (alloc->memory_usage > alloc->peak_memory_usage) {
+ alloc->peak_memory_usage = alloc->memory_usage;
+ }
return 1;
}
/* }}} */
Modified: trunk/php/luasandbox/luasandbox.c
===================================================================
--- trunk/php/luasandbox/luasandbox.c 2012-04-30 03:39:51 UTC (rev 115085)
+++ trunk/php/luasandbox/luasandbox.c 2012-04-30 06:27:46 UTC (rev 115086)
@@ -82,6 +82,9 @@
ZEND_BEGIN_ARG_INFO(arginfo_luasandbox_getMemoryUsage, 0)
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO(arginfo_luasandbox_getPeakMemoryUsage, 0)
+ZEND_END_ARG_INFO()
+
ZEND_BEGIN_ARG_INFO(arginfo_luasandbox_setCPULimit, 0)
ZEND_ARG_INFO(0, normal_limit)
ZEND_ARG_INFO(0, emergency_limit)
@@ -122,6 +125,7 @@
PHP_ME(LuaSandbox, loadBinary, arginfo_luasandbox_loadBinary, 0)
PHP_ME(LuaSandbox, setMemoryLimit, arginfo_luasandbox_setMemoryLimit, 0)
PHP_ME(LuaSandbox, getMemoryUsage, arginfo_luasandbox_getMemoryUsage, 0)
+ PHP_ME(LuaSandbox, getPeakMemoryUsage,
arginfo_luasandbox_getPeakMemoryUsage, 0)
PHP_ME(LuaSandbox, setCPULimit, arginfo_luasandbox_setCPULimit, 0)
PHP_ME(LuaSandbox, getCPUUsage, arginfo_luasandbox_getCPUUsage, 0)
PHP_ME(LuaSandbox, callFunction, arginfo_luasandbox_callFunction, 0)
@@ -812,6 +816,20 @@
}
/* }}} */
+/** {{{ LuaSandbox::getPeakMemoryUsage */
+PHP_METHOD(LuaSandbox, getPeakMemoryUsage)
+{
+ php_luasandbox_obj * sandbox = (php_luasandbox_obj*)
+ zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ RETURN_LONG(sandbox->alloc.peak_memory_usage);
+}
+/* }}} */
+
/** {{{ proto array LuaSandbox::callFunction(string name, ...)
*
* Call a function in the global variable with the given name. The name may
Modified: trunk/php/luasandbox/luasandbox_types.h
===================================================================
--- trunk/php/luasandbox/luasandbox_types.h 2012-04-30 03:39:51 UTC (rev
115085)
+++ trunk/php/luasandbox/luasandbox_types.h 2012-04-30 06:27:46 UTC (rev
115086)
@@ -47,6 +47,7 @@
void * old_alloc_ud;
size_t memory_limit;
size_t memory_usage;
+ size_t peak_memory_usage;
} php_luasandbox_alloc;
struct _php_luasandbox_obj {
Modified: trunk/php/luasandbox/php_luasandbox.h
===================================================================
--- trunk/php/luasandbox/php_luasandbox.h 2012-04-30 03:39:51 UTC (rev
115085)
+++ trunk/php/luasandbox/php_luasandbox.h 2012-04-30 06:27:46 UTC (rev
115086)
@@ -41,6 +41,7 @@
PHP_METHOD(LuaSandbox, loadBinary);
PHP_METHOD(LuaSandbox, setMemoryLimit);
PHP_METHOD(LuaSandbox, getMemoryUsage);
+PHP_METHOD(LuaSandbox, getPeakMemoryUsage);
PHP_METHOD(LuaSandbox, setCPULimit);
PHP_METHOD(LuaSandbox, getCPUUsage);
PHP_METHOD(LuaSandbox, callFunction);
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs