1 /*
2  * Copyright (C) 2021 Jakub Kruszona-Zawadzki, Core Technology Sp. z o.o.
3  *
4  * This file is part of MooseFS.
5  *
6  * MooseFS is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, version 2 (only).
9  *
10  * MooseFS is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with MooseFS; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA
18  * or visit http://www.gnu.org/licenses/gpl-2.0.html
19  */
20 
21 #ifndef _CHARTSDEFS_H_
22 #define _CHARTSDEFS_H_
23 
24 #define CHARTS_FILENAME "csstats.mfs"
25 
26 #define CHARTS_UCPU 0
27 #define CHARTS_SCPU 1
28 #define CHARTS_MASTERIN 2
29 #define CHARTS_MASTEROUT 3
30 #define CHARTS_CSREPIN 4
31 #define CHARTS_CSREPOUT 5
32 #define CHARTS_CSSERVIN 6
33 #define CHARTS_CSSERVOUT 7
34 #define CHARTS_HDRBYTESR 8
35 #define CHARTS_HDRBYTESW 9
36 #define CHARTS_HDRLLOPR 10
37 #define CHARTS_HDRLLOPW 11
38 #define CHARTS_DATABYTESR 12
39 #define CHARTS_DATABYTESW 13
40 #define CHARTS_DATALLOPR 14
41 #define CHARTS_DATALLOPW 15
42 #define CHARTS_HLOPR 16
43 #define CHARTS_HLOPW 17
44 #define CHARTS_RTIME 18
45 #define CHARTS_WTIME 19
46 #define CHARTS_REPL 20
47 #define CHARTS_CREATE 21
48 #define CHARTS_DELETE 22
49 #define CHARTS_VERSION 23
50 #define CHARTS_DUPLICATE 24
51 #define CHARTS_TRUNCATE 25
52 #define CHARTS_DUPTRUNC 26
53 #define CHARTS_TEST 27
54 #define CHARTS_LOAD 28
55 #define CHARTS_MEMORY_RSS 29
56 #define CHARTS_MEMORY_VIRT 30
57 #define CHARTS_MOVELS 31
58 #define CHARTS_MOVEHS 32
59 #define CHARTS_CHANGE 33
60 
61 #define CHARTS 34
62 
63 #define STRID(a,b,c,d) (((((uint8_t)a)*256U+(uint8_t)b)*256U+(uint8_t)c)*256U+(uint8_t)d)
64 
65 /* name , statid , join mode , percent , scale , multiplier , divisor */
66 #define STATDEFS { \
67 	{"ucpu"         ,STRID('U','C','P','U'),CHARTS_MODE_ADD,1,CHARTS_SCALE_MICRO, 100,   60}, \
68 	{"scpu"         ,STRID('S','C','P','U'),CHARTS_MODE_ADD,1,CHARTS_SCALE_MICRO, 100,   60}, \
69 	{"masterin"     ,STRID('M','S','T','I'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,   60}, \
70 	{"masterout"    ,STRID('M','S','T','O'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,   60}, \
71 	{"csrepin"      ,STRID('R','E','P','I'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,   60}, \
72 	{"csrepout"     ,STRID('R','E','P','O'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,   60}, \
73 	{"csservin"     ,STRID('S','R','V','I'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,   60}, \
74 	{"csservout"    ,STRID('S','R','V','O'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,   60}, \
75 	{"hdrbytesr"    ,STRID('H','R','B','R'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,1000,   60}, \
76 	{"hdrbytesw"    ,STRID('H','R','B','W'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,1000,   60}, \
77 	{"hdrllopr"     ,STRID('H','R','O','R'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
78 	{"hdrllopw"     ,STRID('H','R','O','W'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
79 	{"databytesr"   ,STRID('D','T','B','R'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,1000,   60}, \
80 	{"databytesw"   ,STRID('D','T','B','W'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,1000,   60}, \
81 	{"datallopr"    ,STRID('D','T','O','R'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
82 	{"datallopw"    ,STRID('D','T','O','W'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
83 	{"hlopr"        ,STRID('H','L','O','R'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
84 	{"hlopw"        ,STRID('H','L','O','W'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
85 	{"rtime"        ,STRID('T','I','M','R'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MICRO,   1,60000}, \
86 	{"wtime"        ,STRID('T','I','M','W'),CHARTS_MODE_ADD,0,CHARTS_SCALE_MICRO,   1,60000}, \
87 	{"repl"         ,STRID('R','E','P','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
88 	{"create"       ,STRID('C','R','E','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
89 	{"delete"       ,STRID('D','E','L','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
90 	{"version"      ,STRID('V','E','R','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
91 	{"duplicate"    ,STRID('D','U','P','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
92 	{"truncate"     ,STRID('T','R','U','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
93 	{"duptrunc"     ,STRID('D','T','R','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
94 	{"test"         ,STRID('T','S','T','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
95 	{"load"         ,STRID('L','O','A','D'),CHARTS_MODE_MAX,0,CHARTS_SCALE_NONE ,   1,    1}, \
96 	{"memoryrss"    ,STRID('M','E','M','R'),CHARTS_MODE_MAX,0,CHARTS_SCALE_NONE ,   1,    1}, \
97 	{"memoryvirt"   ,STRID('M','E','M','V'),CHARTS_MODE_MAX,0,CHARTS_SCALE_NONE ,   1,    1}, \
98 	{"movels"       ,STRID('M','O','V','L'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
99 	{"movehs"       ,STRID('M','O','V','H'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
100 	{"change"       ,STRID('C','H','G','C'),CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1,    1}, \
101 	{NULL           ,0                     ,0              ,0,0                 ,   0,    0}  \
102 };
103 
104 #define CALCDEFS { \
105 	CHARTS_CALCDEF(CHARTS_MAX(CHARTS_CONST(0),CHARTS_SUB(CHARTS_MEMORY_VIRT,CHARTS_MEMORY_RSS))), \
106 	CHARTS_DEFS_END \
107 };
108 
109 /* name , statid , c1_def , c2_def , c3_def , join mode , percent , scale , multiplier , divisor */
110 #define ESTATDEFS { \
111 	{"cpu"          ,STRID('T','C','P','U'),CHARTS_DIRECT(CHARTS_UCPU)        ,CHARTS_DIRECT(CHARTS_SCPU)        ,CHARTS_NONE                       ,CHARTS_MODE_ADD,1,CHARTS_SCALE_MICRO, 100,60}, \
112 	{"bwin"         ,STRID('B','W','I','N'),CHARTS_DIRECT(CHARTS_CSREPIN)     ,CHARTS_DIRECT(CHARTS_CSSERVIN)    ,CHARTS_NONE                       ,CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,60}, \
113 	{"bwout"        ,STRID('B','W','O','U'),CHARTS_DIRECT(CHARTS_CSREPOUT)    ,CHARTS_DIRECT(CHARTS_CSSERVOUT)   ,CHARTS_NONE                       ,CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,8000,60}, \
114 	{"hddread"      ,STRID('H','D','B','R'),CHARTS_DIRECT(CHARTS_HDRBYTESR)   ,CHARTS_DIRECT(CHARTS_DATABYTESR)  ,CHARTS_NONE                       ,CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,1000,60}, \
115 	{"hddwrite"     ,STRID('H','D','B','W'),CHARTS_DIRECT(CHARTS_HDRBYTESW)   ,CHARTS_DIRECT(CHARTS_DATABYTESW)  ,CHARTS_NONE                       ,CHARTS_MODE_ADD,0,CHARTS_SCALE_MILI ,1000,60}, \
116 	{"hddopsr"      ,STRID('H','D','O','R'),CHARTS_DIRECT(CHARTS_HDRLLOPR)    ,CHARTS_DIRECT(CHARTS_DATALLOPR)   ,CHARTS_NONE                       ,CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1, 1}, \
117 	{"hddopsw"      ,STRID('H','D','O','W'),CHARTS_DIRECT(CHARTS_HDRLLOPW)    ,CHARTS_DIRECT(CHARTS_DATALLOPW)   ,CHARTS_NONE                       ,CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1, 1}, \
118 	{"mem"          ,STRID('T','M','E','M'),CHARTS_CALC(0)                    ,CHARTS_DIRECT(CHARTS_MEMORY_RSS)  ,CHARTS_NONE                       ,CHARTS_MODE_MAX,0,CHARTS_SCALE_NONE ,   1, 1}, \
119 	{"move"         ,STRID('M','O','V','E'),CHARTS_DIRECT(CHARTS_MOVELS)      ,CHARTS_DIRECT(CHARTS_MOVEHS)      ,CHARTS_NONE                       ,CHARTS_MODE_ADD,0,CHARTS_SCALE_NONE ,   1, 1}, \
120 	{NULL           ,0                     ,CHARTS_NONE                       ,CHARTS_NONE                       ,CHARTS_NONE                       ,0              ,0,0                 ,   0, 0}  \
121 };
122 
123 #endif
124