HEX
Server: Apache
System: Linux wp02.tdr-lab.com 3.10.0-1160.42.2.el7.x86_64 #1 SMP Tue Sep 7 14:49:57 UTC 2021 x86_64
User: kusanagi (1001)
PHP: 7.4.23
Disabled: NONE
Upload Files
File: //proc/self/root/usr/include/hphp/runtime/base/memory-usage-stats.h
/*
   +----------------------------------------------------------------------+
   | HipHop for PHP                                                       |
   +----------------------------------------------------------------------+
   | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com)  |
   +----------------------------------------------------------------------+
   | This source file is subject to version 3.01 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available through the world-wide-web at the following url:           |
   | http://www.php.net/license/3_01.txt                                  |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | license@php.net so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
*/

#ifndef incl_HPHP_RUNTIME_BASE_MEMORY_USAGESTATS_H_
#define incl_HPHP_RUNTIME_BASE_MEMORY_USAGESTATS_H_

#include "hphp/util/alloc.h" // must be included before USE_JEMALLOC is used

namespace HPHP {

//////////////////////////////////////////////////////////////////////

/*
 * Usage stats for a request, all in bytes.
 *
 * If jemalloc is being used, then usage and peakUsage also include bytes that
 * are reported by jemalloc's per-thread stats that are allocated outside of
 * the MemoryManager APIs (mallocSmallSize, mallocBigSize, objMalloc.)
 * totalAlloc will also be maintained, otherwise it will be 0.
 */
struct MemoryUsageStats {
  int64_t mmUsage;    // bytes are currently in use via MM apis
  int64_t auxUsage;   // adjustment for allocations via jemalloc

  int64_t capacity;   // sum of slabs & big objects (MM's capacity)
  int64_t limit;      // the max bytes allowed for a request before it is
                      // terminated for exceeding the memory limit
  int64_t mallocDebt; // how many bytes of malloced memory have not
                      // been processed by MemoryManager::refreshStats
  int64_t peakUsage;  // how many bytes have been used at maximum
  int64_t peakCap;    // peak bytes owned by MemoryManager (slabs and big)
  int64_t peakIntervalUsage; // peakUsage during userland interval
  int64_t peakIntervalCap; // peakCap during userland interval

  int64_t totalAlloc; // how many bytes have cumulatively been allocated
                      // by the underlying allocator

  int64_t usage() const { return mmUsage + auxUsage; }

  friend struct MemoryManager;
};

//////////////////////////////////////////////////////////////////////

}

#endif