diff --git a/src/Server.php b/src/Server.php index a29cb29fc..b20ec0a35 100644 --- a/src/Server.php +++ b/src/Server.php @@ -90,6 +90,7 @@ use pocketmine\scheduler\AsyncPool; use pocketmine\snooze\SleeperHandler; use pocketmine\stats\SendUsageTask; use pocketmine\timings\Timings; +use pocketmine\timings\TimingsAwareSleeperHandler; use pocketmine\timings\TimingsHandler; use pocketmine\updater\UpdateChecker; use pocketmine\utils\AssumptionFailedError; @@ -781,7 +782,8 @@ class Server{ self::$instance = $this; $this->startTime = microtime(true); - $this->tickSleeper = new SleeperHandler(); + Timings::init(); + $this->tickSleeper = new TimingsAwareSleeperHandler(Timings::$serverInterrupts); $this->signalHandler = new SignalHandler(function() : void{ $this->logger->info("Received signal interrupt, stopping the server"); @@ -961,7 +963,6 @@ class Server{ ))); $this->logger->info($this->getLanguage()->translate(KnownTranslationFactory::pocketmine_server_license($this->getName()))); - Timings::init(); TimingsHandler::setEnabled($this->configGroup->getPropertyBool("settings.enable-profiling", false)); $this->profilingTickRate = $this->configGroup->getPropertyInt("settings.profile-report-trigger", 20); diff --git a/src/timings/Timings.php b/src/timings/Timings.php index 5d0ece80d..1f8426969 100644 --- a/src/timings/Timings.php +++ b/src/timings/Timings.php @@ -41,6 +41,8 @@ abstract class Timings{ /** @var TimingsHandler */ public static $serverTick; /** @var TimingsHandler */ + public static $serverInterrupts; + /** @var TimingsHandler */ public static $memoryManager; /** @var TimingsHandler */ public static $garbageCollector; @@ -140,7 +142,8 @@ abstract class Timings{ self::$initialized = true; self::$fullTick = new TimingsHandler("Full Server Tick"); - self::$serverTick = new TimingsHandler(self::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "Full Server Tick", self::$fullTick); + self::$serverTick = new TimingsHandler(self::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "Server Tick Update Cycle", self::$fullTick); + self::$serverInterrupts = new TimingsHandler(self::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "Server Mid-Tick Processing", self::$fullTick); self::$memoryManager = new TimingsHandler("Memory Manager"); self::$garbageCollector = new TimingsHandler("Garbage Collector", self::$memoryManager); self::$titleTick = new TimingsHandler("Console Title Tick"); diff --git a/src/timings/TimingsAwareSleeperHandler.php b/src/timings/TimingsAwareSleeperHandler.php new file mode 100644 index 000000000..29d826d94 --- /dev/null +++ b/src/timings/TimingsAwareSleeperHandler.php @@ -0,0 +1,47 @@ +timings->startTiming(); + try{ + parent::processNotifications(); + }finally{ + $this->timings->stopTiming(); + } + } +} \ No newline at end of file