~ubuntu-branches/ubuntu/utopic/gridengine/utopic

« back to all changes in this revision

Viewing changes to source/libs/sgeobj/sge_hostL.h

  • Committer: Bazaar Package Importer
  • Author(s): Mark Hymers
  • Date: 2008-06-25 22:36:13 UTC
  • Revision ID: james.westby@ubuntu.com-20080625223613-tvd9xlhuoct9kyhm
Tags: upstream-6.2~beta2
ImportĀ upstreamĀ versionĀ 6.2~beta2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __SGE_HOSTL_H
 
2
#define __SGE_HOSTL_H
 
3
 
 
4
/*___INFO__MARK_BEGIN__*/
 
5
/*************************************************************************
 
6
 * 
 
7
 *  The Contents of this file are made available subject to the terms of
 
8
 *  the Sun Industry Standards Source License Version 1.2
 
9
 * 
 
10
 *  Sun Microsystems Inc., March, 2001
 
11
 * 
 
12
 * 
 
13
 *  Sun Industry Standards Source License Version 1.2
 
14
 *  =================================================
 
15
 *  The contents of this file are subject to the Sun Industry Standards
 
16
 *  Source License Version 1.2 (the "License"); You may not use this file
 
17
 *  except in compliance with the License. You may obtain a copy of the
 
18
 *  License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
 
19
 * 
 
20
 *  Software provided under this License is provided on an "AS IS" basis,
 
21
 *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
 
22
 *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
 
23
 *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
 
24
 *  See the License for the specific provisions governing your rights and
 
25
 *  obligations concerning the Software.
 
26
 * 
 
27
 *   The Initial Developer of the Original Code is: Sun Microsystems, Inc.
 
28
 * 
 
29
 *   Copyright: 2001 by Sun Microsystems, Inc.
 
30
 * 
 
31
 *   All Rights Reserved.
 
32
 * 
 
33
 ************************************************************************/
 
34
/*___INFO__MARK_END__*/
 
35
 
 
36
#include "sge_boundaries.h"
 
37
#include "cull.h"
 
38
 
 
39
#ifdef  __cplusplus
 
40
extern "C" {
 
41
#endif
 
42
 
 
43
/* *INDENT-OFF* */
 
44
 
 
45
/*
 
46
 * exec host
 
47
 */
 
48
enum {
 
49
   EH_name = EH_LOWERBOUND,  /* directly user controlled - spooled */
 
50
   EH_scaling_list,          /* HS_Type - directly user controlled exec
 
51
                              * host only Used to scale host load values.
 
52
                              * Contains pairs of load value names and
 
53
                              * doubles. spooled */
 
54
   EH_consumable_config_list, /* consumable resources of host
 
55
                               * CE_Type */
 
56
   EH_usage_scaling_list,    /* HS_Type - directly user controlled exec
 
57
                              * host only SGEEE only scaling of usage
 
58
                              * spooled */
 
59
   EH_load_list,             /* HL_Type exec host only list of load values 
 
60
                              * reported for exechost spooled (not
 
61
                              * everytime load comes in) */
 
62
   EH_lt_heard_from,
 
63
   EH_processors,            /* for license purposes exec host only
 
64
                              * spooled */
 
65
   EH_acl,                   /* US_Type - userset access list */
 
66
   EH_xacl,                  /* US_Type - userset access list */
 
67
   EH_prj,                   /* PR_Type - project access list */
 
68
   EH_xprj,                  /* PR_Type - project excluded access list */
 
69
 
 
70
   /* scheduling stuff */
 
71
   EH_sort_value,            /* combined load value for sorting only
 
72
                              * scheduler local not spooled */
 
73
   EH_reuse_me,              /* can be rused */
 
74
   EH_tagged,                /* used for parallel scheduling only
 
75
                              * scheduler local not spooled */
 
76
   EH_load_correction_factor,        /* a value of 100 (stands for 1)
 
77
                                      * means the load values of this host 
 
78
                                      * * has to be increased fully by all
 
79
                                      * values from
 
80
                                      * conf.load_decay_adjustments only
 
81
                                      * scheduler local not spooled */
 
82
   EH_seq_no,                /* suitability of this host for a job only
 
83
                              * scheduler local not spooled */
 
84
   EH_real_name,             /* in case of pseudo host: real name spooled */
 
85
   EH_sge_load,              /* SGEEE load calculated from load values
 
86
                              * scheduler local */
 
87
   EH_sge_ticket_pct,        /* percentage of total SGEEE tickets scheduler
 
88
                              * local */
 
89
   EH_sge_load_pct,          /* percentage of total SGEEE load scheduler
 
90
                              * local */
 
91
 
 
92
   EH_featureset_id,         /* supported feature-set id; not spooled */
 
93
   EH_scaled_usage_list,     /* scaled usage for jobs on a host - used by
 
94
                              * sge_host_mon */
 
95
   EH_scaled_usage_pct_list, /* scaled usage for jobs on a host - used by
 
96
                              * sge_host_mon */
 
97
   EH_num_running_jobs,      /* number of jobs running on a host - used by 
 
98
                              * sge_host_mon */
 
99
   EH_load_report_interval,  /* used for caching from global/local
 
100
                              * configuration */
 
101
   EH_resource_utilization,  /* RUE_Type contains per consumable information 
 
102
                              * about resource utilization for this host */
 
103
   EH_cached_complexes,      /* CE_Type used in scheduler for caching
 
104
                              * built attributes */
 
105
   EH_cache_version,         /* used to decide whether QU_cached_complexes 
 
106
                              * needs a refresh */
 
107
   EH_master_host,           /* indicates in scheduler whether a exec host 
 
108
                              * is suitable as a master host */
 
109
   EH_reschedule_unknown,    /* used for caching from global/local conf;
 
110
                              * timout after which jobs will be
 
111
                              * rescheduled automatically */
 
112
   EH_reschedule_unknown_list,       /* after the rundown of
 
113
                                      * EH_reschedule_unknown this list
 
114
                                      * contains all jobs which will be
 
115
                                      * rescheduled automatically */
 
116
   EH_report_seqno,          /* sequence number of the last report
 
117
                              * (job/load/..) qmaster received from the
 
118
                              * execd. This seqno is used to detect old
 
119
                              * reports, because reports are send
 
120
                              * asynchronous and we have no guarantee that 
 
121
                              * they arrive in order at qmaster */
 
122
   EH_report_variables,      /* list of variables written to the report file */
 
123
   EH_merged_report_variables /* list of variables written to the report file,
 
124
                              * merged from global host and actual host
 
125
                              */
 
126
};
 
127
 
 
128
LISTDEF(EH_Type)
 
129
   JGDI_ROOT_OBJ(ExecHost, SGE_EXECHOST_LIST, ADD | MODIFY | DELETE | GET | GET_LIST)
 
130
   JGDI_EVENT_OBJ(ADD(sgeE_EXECHOST_ADD) | MODIFY(sgeE_EXECHOST_MOD) | DELETE(sgeE_EXECHOST_DEL) | GET_LIST(sgeE_EXECHOST_LIST))
 
131
   SGE_HOST_D(EH_name, CULL_PRIMARY_KEY | CULL_HASH | CULL_UNIQUE | CULL_SPOOL | CULL_JGDI_CONF, "template")
 
132
   SGE_MAP(EH_scaling_list, HS_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
133
   SGE_LIST(EH_consumable_config_list, CE_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
134
   SGE_MAP(EH_usage_scaling_list, HS_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
135
   SGE_MAP(EH_load_list, HL_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_RO)
 
136
   SGE_ULONG(EH_lt_heard_from, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
137
   SGE_ULONG(EH_processors, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_RO)
 
138
   SGE_LIST(EH_acl, US_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
139
   SGE_LIST(EH_xacl, US_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
140
   SGE_LIST(EH_prj, PR_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
141
   SGE_LIST(EH_xprj, PR_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
142
 
 
143
   /* scheduling stuff */
 
144
   SGE_DOUBLE(EH_sort_value, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
145
   SGE_ULONG(EH_reuse_me, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
146
   SGE_ULONG(EH_tagged, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
147
   SGE_ULONG(EH_load_correction_factor, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
148
   SGE_ULONG(EH_seq_no, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
149
 
 
150
   SGE_STRING(EH_real_name, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
151
 
 
152
   SGE_ULONG(EH_sge_load, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
153
   SGE_DOUBLE(EH_sge_ticket_pct, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
154
   SGE_DOUBLE(EH_sge_load_pct, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
155
 
 
156
   SGE_ULONG(EH_featureset_id, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
157
 
 
158
   SGE_MAP(EH_scaled_usage_list, UA_Type, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
159
   SGE_MAP(EH_scaled_usage_pct_list, UA_Type, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
160
   SGE_ULONG(EH_num_running_jobs, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
161
 
 
162
   SGE_ULONG(EH_load_report_interval, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
163
   SGE_LIST(EH_resource_utilization, RUE_Type, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
164
   SGE_LIST(EH_cached_complexes, CE_Type, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
165
   SGE_ULONG(EH_cache_version, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
166
   SGE_ULONG(EH_master_host, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
167
   SGE_ULONG(EH_reschedule_unknown, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
168
   SGE_LIST(EH_reschedule_unknown_list, RU_Type, CULL_DEFAULT | CULL_JGDI_HIDDEN) /* JG: TODO: shall it be spooled? Problem: composed primary key */
 
169
   SGE_ULONG(EH_report_seqno, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
170
   SGE_LIST(EH_report_variables, STU_Type, CULL_DEFAULT | CULL_SPOOL | CULL_JGDI_CONF)
 
171
   SGE_LIST(EH_merged_report_variables, STU_Type, CULL_DEFAULT | CULL_JGDI_HIDDEN)
 
172
LISTEND 
 
173
 
 
174
NAMEDEF(EHN)
 
175
   NAME("EH_name")
 
176
   NAME("EH_scaling_list")
 
177
   NAME("EH_consumable_config_list")
 
178
   NAME("EH_usage_scaling_list")
 
179
   NAME("EH_load_list")
 
180
   NAME("EH_lt_heard_from")
 
181
   NAME("EH_processors")
 
182
   NAME("EH_acl")
 
183
   NAME("EH_xacl")
 
184
   NAME("EH_prj")
 
185
   NAME("EH_xprj")
 
186
 
 
187
   /* scheduling stuff */
 
188
   NAME("EH_sort_value")
 
189
   NAME("EH_reuse_me")
 
190
   NAME("EH_tagged")
 
191
   NAME("EH_load_correction_factor")
 
192
   NAME("EH_seq_no")
 
193
 
 
194
   NAME("EH_real_name")
 
195
 
 
196
   NAME("EH_sge_load")
 
197
   NAME("EH_sge_ticket_pct")
 
198
   NAME("EH_sge_load_pct")
 
199
 
 
200
   NAME("EH_featureset_id")
 
201
 
 
202
   NAME("EH_scaled_usage_list")
 
203
   NAME("EH_scaled_usage_pct_list")
 
204
   NAME("EH_num_running_jobs")
 
205
 
 
206
   NAME("EH_load_report_interval")
 
207
   NAME("EH_resource_utilization")
 
208
   NAME("EH_cached_complexes")
 
209
   NAME("EH_cache_version")
 
210
   NAME("EH_master_host")
 
211
   NAME("EH_reschedule_unknown")
 
212
   NAME("EH_reschedule_unknown_list")
 
213
   NAME("EH_report_seqno")
 
214
   NAME("EH_report_variables")
 
215
   NAME("EH_merged_report_variables")
 
216
NAMEEND
 
217
 
 
218
#define EHS sizeof(EHN)/sizeof(char*)
 
219
 
 
220
/*
 
221
 * reschedule unknown list
 
222
 */
 
223
enum {
 
224
   RU_job_number = RU_LOWERBOUND,
 
225
   RU_task_number,
 
226
   RU_state
 
227
};
 
228
 
 
229
LISTDEF(RU_Type)
 
230
   JGDI_OBJ(RescheduleUnknown)
 
231
   SGE_ULONG(RU_job_number, CULL_DEFAULT)
 
232
   SGE_ULONG(RU_task_number, CULL_DEFAULT)
 
233
   SGE_ULONG(RU_state, CULL_DEFAULT)
 
234
LISTEND 
 
235
 
 
236
NAMEDEF(RUN)
 
237
   NAME("RU_job_number")
 
238
   NAME("RU_task_number")
 
239
   NAME("RU_state")
 
240
NAMEEND
 
241
 
 
242
#define RUS sizeof(RUN)/sizeof(char*)
 
243
 
 
244
/*
 
245
 *  admin host
 
246
 */
 
247
enum {
 
248
   AH_name = AH_LOWERBOUND
 
249
};
 
250
 
 
251
LISTDEF(AH_Type)
 
252
   JGDI_ROOT_OBJ(AdminHost, SGE_ADMINHOST_LIST, ADD | DELETE | GET_LIST)
 
253
   JGDI_EVENT_OBJ(ADD(sgeE_ADMINHOST_ADD) | MODIFY(sgeE_ADMINHOST_MOD) | DELETE(sgeE_ADMINHOST_DEL) | GET_LIST(sgeE_ADMINHOST_LIST))
 
254
   SGE_HOST(AH_name, CULL_PRIMARY_KEY | CULL_HASH | CULL_UNIQUE | CULL_SPOOL | CULL_JGDI_CONF)
 
255
LISTEND 
 
256
 
 
257
NAMEDEF(AHN)
 
258
   NAME("AH_name")
 
259
NAMEEND
 
260
 
 
261
#define AHS sizeof(AHN)/sizeof(char*)
 
262
 
 
263
/*
 
264
 * submit host
 
265
 */
 
266
enum {
 
267
   SH_name = SH_LOWERBOUND
 
268
};
 
269
 
 
270
LISTDEF(SH_Type)
 
271
   JGDI_ROOT_OBJ( SubmitHost, SGE_SUBMITHOST_LIST, ADD | DELETE | GET_LIST)
 
272
   JGDI_EVENT_OBJ(ADD(sgeE_SUBMITHOST_ADD) | MODIFY(sgeE_SUBMITHOST_MOD) | DELETE(sgeE_SUBMITHOST_DEL) | GET_LIST(sgeE_SUBMITHOST_LIST))
 
273
   SGE_HOST(SH_name, CULL_PRIMARY_KEY | CULL_HASH | CULL_UNIQUE | CULL_SPOOL | CULL_JGDI_CONF)
 
274
LISTEND 
 
275
 
 
276
NAMEDEF(SHN)
 
277
   NAME("SH_name")
 
278
NAMEEND
 
279
 
 
280
#define SHS sizeof(SHN)/sizeof(char*)
 
281
 
 
282
/* 
 
283
 * sge standard load value names
 
284
 *
 
285
 * use these defined names for refering
 
286
 */
 
287
 
 
288
/* static load parameters */
 
289
#define LOAD_ATTR_ARCH           "arch"
 
290
#define LOAD_ATTR_NUM_PROC       "num_proc"
 
291
 
 
292
/* raw load parameters */
 
293
#define LOAD_ATTR_LOAD_SHORT     "load_short"
 
294
#define LOAD_ATTR_LOAD_MEDIUM    "load_medium"
 
295
#define LOAD_ATTR_LOAD_LONG      "load_long"
 
296
#define LOAD_ATTR_LOAD_AVG       "load_avg"
 
297
 
 
298
/* values divided by LOAD_ATTR_NUM_PROC */
 
299
#define LOAD_ATTR_NP_LOAD_SHORT  "np_load_short"
 
300
#define LOAD_ATTR_NP_LOAD_MEDIUM "np_load_medium"
 
301
#define LOAD_ATTR_NP_LOAD_LONG   "np_load_long"
 
302
#define LOAD_ATTR_NP_LOAD_AVG    "np_load_avg"
 
303
#define LOAD_ATTR_MEM_FREE       "mem_free"
 
304
#define LOAD_ATTR_SWAP_FREE      "swap_free"
 
305
#define LOAD_ATTR_VIRTUAL_FREE   "virtual_free"
 
306
#define LOAD_ATTR_MEM_TOTAL      "mem_total"
 
307
#define LOAD_ATTR_SWAP_TOTAL     "swap_total"
 
308
#define LOAD_ATTR_VIRTUAL_TOTAL  "virtual_total"
 
309
#define LOAD_ATTR_MEM_USED       "mem_used"
 
310
#define LOAD_ATTR_SWAP_USED      "swap_used"
 
311
#define LOAD_ATTR_VIRTUAL_USED   "virtual_used"
 
312
#define LOAD_ATTR_SWAP_RSVD      "swap_rsvd"
 
313
 
 
314
/*
 
315
 * host load
 
316
 */
 
317
enum {
 
318
   HL_name = HL_LOWERBOUND,
 
319
   HL_value,
 
320
   HL_last_update,
 
321
   HL_static
 
322
};
 
323
 
 
324
LISTDEF(HL_Type)
 
325
   JGDI_MAP_OBJ(HL_name, HL_value)
 
326
   SGE_STRING(HL_name, CULL_PRIMARY_KEY | CULL_HASH | CULL_UNIQUE | CULL_SUBLIST)
 
327
   SGE_STRING(HL_value, CULL_DEFAULT | CULL_SUBLIST)
 
328
   SGE_ULONG(HL_last_update, CULL_DEFAULT)
 
329
   SGE_BOOL(HL_static, CULL_DEFAULT)
 
330
LISTEND 
 
331
 
 
332
NAMEDEF(HLN)
 
333
   NAME("HL_name")
 
334
   NAME("HL_value")
 
335
   NAME("HL_last_update")
 
336
   NAME("HL_static")
 
337
NAMEEND
 
338
 
 
339
#define HLS sizeof(HLN)/sizeof(char*)
 
340
 
 
341
/*
 
342
 * load scaling
 
343
 */
 
344
enum {
 
345
   HS_name = HS_LOWERBOUND,
 
346
   HS_value
 
347
};
 
348
 
 
349
LISTDEF(HS_Type)
 
350
   JGDI_MAP_OBJ(HS_name, HS_value)
 
351
   SGE_STRING(HS_name, CULL_PRIMARY_KEY | CULL_DEFAULT | CULL_SUBLIST)
 
352
   SGE_DOUBLE(HS_value, CULL_DEFAULT | CULL_SUBLIST)
 
353
LISTEND 
 
354
 
 
355
NAMEDEF(HSN)
 
356
   NAME("HS_name")
 
357
   NAME("HS_value")
 
358
NAMEEND
 
359
 
 
360
/* *INDENT-ON* */
 
361
 
 
362
#define HSS sizeof(HSN)/sizeof(char*)
 
363
#ifdef  __cplusplus
 
364
}
 
365
#endif
 
366
#endif                          /* __SGE_HOSTL_H */