From 3907a2b6ba58fa49022e3e7c8256731dfa2e0d00 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 13 Mar 2020 17:32:17 +0000 Subject: [PATCH] Process: split getMemoryUsage() into 2 functions this isn't released yet so it's OK to change. phpstan level 7 doesn't like these kinds of ambiguous return types because there's no way for it to tell which type is returned without a return type specifying extension, and it's easier to just change the API than to make PHPStan understand it. --- src/pocketmine/MemoryManager.php | 2 +- src/pocketmine/Server.php | 2 +- src/pocketmine/command/defaults/StatusCommand.php | 2 +- src/pocketmine/event/server/LowMemoryEvent.php | 3 ++- src/pocketmine/scheduler/SendUsageTask.php | 2 +- src/pocketmine/utils/Process.php | 13 +++++++------ src/pocketmine/utils/Utils.php | 3 ++- 7 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/pocketmine/MemoryManager.php b/src/pocketmine/MemoryManager.php index 6d2206063e..4f3d2226b4 100644 --- a/src/pocketmine/MemoryManager.php +++ b/src/pocketmine/MemoryManager.php @@ -226,7 +226,7 @@ class MemoryManager{ if(($this->memoryLimit > 0 or $this->globalMemoryLimit > 0) and ++$this->checkTicker >= $this->checkRate){ $this->checkTicker = 0; - $memory = Process::getMemoryUsage(true); + $memory = Process::getAdvancedMemoryUsage(); $trigger = false; if($this->memoryLimit > 0 and $memory[0] > $this->memoryLimit){ $trigger = 0; diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 4fd6c24761..ebb7663e38 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -2325,7 +2325,7 @@ class Server{ Timings::$titleTickTimer->startTiming(); $d = Process::getRealMemoryUsage(); - $u = Process::getMemoryUsage(true); + $u = Process::getAdvancedMemoryUsage(); $usage = sprintf("%g/%g/%g/%g MB @ %d threads", round(($u[0] / 1024) / 1024, 2), round(($d[0] / 1024) / 1024, 2), round(($u[1] / 1024) / 1024, 2), round(($u[2] / 1024) / 1024, 2), Process::getThreadCount()); echo "\x1b]0;" . $this->getName() . " " . diff --git a/src/pocketmine/command/defaults/StatusCommand.php b/src/pocketmine/command/defaults/StatusCommand.php index 9fb0253bb2..60d49c2dc8 100644 --- a/src/pocketmine/command/defaults/StatusCommand.php +++ b/src/pocketmine/command/defaults/StatusCommand.php @@ -49,7 +49,7 @@ class StatusCommand extends VanillaCommand{ } $rUsage = Process::getRealMemoryUsage(); - $mUsage = Process::getMemoryUsage(true); + $mUsage = Process::getAdvancedMemoryUsage(); $server = $sender->getServer(); $sender->sendMessage(TextFormat::GREEN . "---- " . TextFormat::WHITE . "Server status" . TextFormat::GREEN . " ----"); diff --git a/src/pocketmine/event/server/LowMemoryEvent.php b/src/pocketmine/event/server/LowMemoryEvent.php index 46f0c8022c..7c7a090a69 100644 --- a/src/pocketmine/event/server/LowMemoryEvent.php +++ b/src/pocketmine/event/server/LowMemoryEvent.php @@ -75,6 +75,7 @@ class LowMemoryEvent extends ServerEvent{ * Amount of memory already freed */ public function getMemoryFreed() : int{ - return $this->getMemory() - ($this->isGlobal() ? Process::getMemoryUsage(true)[1] : Process::getMemoryUsage(true)[0]); + $usage = Process::getAdvancedMemoryUsage(); + return $this->getMemory() - ($this->isGlobal() ? $usage[1] : $usage[0]); } } diff --git a/src/pocketmine/scheduler/SendUsageTask.php b/src/pocketmine/scheduler/SendUsageTask.php index a92c0eb7f5..4e8bee6087 100644 --- a/src/pocketmine/scheduler/SendUsageTask.php +++ b/src/pocketmine/scheduler/SendUsageTask.php @@ -136,7 +136,7 @@ class SendUsageTask extends AsyncTask{ "historyList" => array_values($playerList) ]; - $info = Process::getMemoryUsage(true); + $info = Process::getAdvancedMemoryUsage(); $data["system"] = [ "mainMemory" => $info[0], "totalMemory" => $info[1], diff --git a/src/pocketmine/utils/Process.php b/src/pocketmine/utils/Process.php index 47520344aa..ca3f13ac65 100644 --- a/src/pocketmine/utils/Process.php +++ b/src/pocketmine/utils/Process.php @@ -47,9 +47,10 @@ final class Process{ } /** - * @return int[]|int + * @return int[] + * @phpstan-return array{int,int,int} */ - public static function getMemoryUsage(bool $advanced = false){ + public static function getAdvancedMemoryUsage(){ $reserved = memory_get_usage(); $VmSize = null; $VmRSS = null; @@ -70,10 +71,6 @@ final class Process{ $VmRSS = memory_get_usage(); } - if(!$advanced){ - return $VmRSS; - } - if($VmSize === null){ $VmSize = memory_get_usage(true); } @@ -81,6 +78,10 @@ final class Process{ return [$reserved, $VmRSS, $VmSize]; } + public static function getMemoryUsage() : int{ + return self::getAdvancedMemoryUsage()[1]; + } + /** * @return int[] */ diff --git a/src/pocketmine/utils/Utils.php b/src/pocketmine/utils/Utils.php index 643f9ee274..7cbc03610f 100644 --- a/src/pocketmine/utils/Utils.php +++ b/src/pocketmine/utils/Utils.php @@ -283,11 +283,12 @@ class Utils{ /** * @deprecated * @see Process::getMemoryUsage() + * @see Process::getAdvancedMemoryUsage() * * @return int[]|int */ public static function getMemoryUsage(bool $advanced = false){ - return Process::getMemoryUsage($advanced); + return $advanced ? Process::getAdvancedMemoryUsage() : Process::getMemoryUsage(); } /**