File: pg_stat_kcache.h

package info (click to toggle)
pg-stat-kcache 2.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 312 kB
  • sloc: ansic: 990; sql: 565; makefile: 27; sh: 2
file content (69 lines) | stat: -rw-r--r-- 2,169 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef PGSK_H_
#define PGSK_H_

#define PG_STAT_KCACHE_COLS_V2_0    7
#define PG_STAT_KCACHE_COLS_V2_1    15
#define PG_STAT_KCACHE_COLS_V2_2    28
#define PG_STAT_KCACHE_COLS_V2_3    29
#define PG_STAT_KCACHE_COLS         29 /* maximum of above */

/* ru_inblock block size is 512 bytes with Linux
 * see http://lkml.indiana.edu/hypermail/linux/kernel/0703.2/0937.html
 */
#define RUSAGE_BLOCK_SIZE	512			/* Size of a block for getrusage() */

/*
 * Current getrusage counters.
 *
 * For platform without getrusage support, we rely on postgres implementation
 * defined in rusagestub.h, which only supports user and system time.
 *
 * Note that the following counters are not maintained on GNU/Linux:
 *   - ru_nswap
 *   - ru_msgsnd
 *   - ru_msgrcv
 *   - ru_nsignals
*/
typedef struct pgskCounters
{
	double			usage;		/* usage factor */
	/* These fields are always used */
	float8			utime;		/* CPU user time */
	float8			stime;		/* CPU system time */
#ifdef HAVE_GETRUSAGE
/* These fields are only used for platform with HAVE_GETRUSAGE defined */
	int64			minflts;	/* page reclaims (soft page faults) */
	int64			majflts;	/* page faults (hard page faults) */
	int64			nswaps;		/* swaps */
	int64			reads;		/* Physical block reads */
	int64			writes;		/* Physical block writes */
	int64			msgsnds;	/* IPC messages sent */
	int64			msgrcvs;	/* IPC messages received */
	int64			nsignals;	/* signals received */
	int64			nvcsws;		/* voluntary context witches */
	int64			nivcsws;	/* unvoluntary context witches */
#endif
} pgskCounters;

typedef enum pgskStoreKind
{
	/*
	 * PGSS_PLAN and PGSS_EXEC must be respectively 0 and 1 as they're used to
	 * reference the underlying values in the arrays in the Counters struct,
	 * and this order is required in pg_stat_statements_internal().
	 */
	PGSK_PLAN = 0,
	PGSK_EXEC,

	PGSK_NUMKIND				/* Must be last value of this enum */
} pgskStoreKind;

/* Hook for extensions to use pgskCounters right after calculation. */
typedef void (*pgsk_counters_hook_type) (
		pgskCounters *counters,
		const char *query_string,
		int level,
		pgskStoreKind kind);
extern PGDLLIMPORT pgsk_counters_hook_type pgsk_counters_hook;

#endif