diff options
Diffstat (limited to 'xlators/performance/io-threads/src/io-threads.h')
-rw-r--r-- | xlators/performance/io-threads/src/io-threads.h | 181 |
1 files changed, 95 insertions, 86 deletions
diff --git a/xlators/performance/io-threads/src/io-threads.h b/xlators/performance/io-threads/src/io-threads.h index b6a7213b1ed..aa31ece2d67 100644 --- a/xlators/performance/io-threads/src/io-threads.h +++ b/xlators/performance/io-threads/src/io-threads.h @@ -1,20 +1,20 @@ /* - Copyright (c) 2006-2009 Z RESEARCH, Inc. <http://www.zresearch.com> - This file is part of GlusterFS. - - GlusterFS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 3 of the License, - or (at your option) any later version. - - GlusterFS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see - <http://www.gnu.org/licenses/>. + Copyright (c) 2006-2009 Z RESEARCH, Inc. <http://www.zresearch.com> + This file is part of GlusterFS. + + GlusterFS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3 of the License, + or (at your option) any later version. + + GlusterFS is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + <http://www.gnu.org/licenses/>. */ #ifndef __IOT_H @@ -43,10 +43,10 @@ struct iot_worker; struct iot_request; struct iot_request { - struct list_head list; /* Attaches this request to the list of - requests. - */ - call_stub_t *stub; + struct list_head list; /* Attaches this request to the list of + requests. + */ + call_stub_t *stub; }; #define IOT_STATE_ACTIVE 1 @@ -68,75 +68,84 @@ struct iot_request { #define IOT_THREAD_STACK_SIZE ((size_t)(1024*1024)) struct iot_worker { - struct list_head rqlist; /* List of requests assigned to me. */ - struct iot_conf *conf; - int64_t q,dq; - pthread_cond_t dq_cond; - pthread_mutex_t qlock; - int32_t queue_size; - pthread_t thread; - int state; /* What state is the thread in. */ - int thread_idx; /* Thread's index into the worker array. Since this - will be thread local data, for ensuring that number - of threads dont fall below a minimum, we just dont - allow threads with specific indices to exit. - Helps us in eliminating one place where otherwise - a lock would have been required to update centralized - state inside conf. - */ + struct list_head rqlist; /* List of requests assigned to me. */ + struct iot_conf *conf; + int64_t q,dq; + pthread_cond_t dq_cond; + pthread_mutex_t qlock; + int32_t queue_size; + pthread_t thread; + int state; /* What state is the thread in. */ + int thread_idx; /* Thread's index into the worker + array. Since this will be thread + local data, for ensuring that + number of threads dont fall below + a minimum, we just dont allow + threads with specific indices to + exit. Helps us in eliminating one + place where otherwise a lock + would have been required to update + centralized state inside conf. + */ }; struct iot_conf { - int32_t thread_count; - struct iot_worker ** workers; - - xlator_t *this; - /* Config state for ordered threads. */ - pthread_mutex_t otlock; /* Used to sync any state that needs to be - changed by the ordered threads. - */ - - int max_o_threads; /* Max. number of ordered threads */ - int min_o_threads; /* Min. number of ordered threads. Ordered - thread count never falls below this - threshold. - */ - - int o_idle_time; /* in Secs. The idle time after which an - ordered thread exits. - */ - gf_boolean_t o_scaling; /* Set to IOT_SCALING_OFF if user does not want - thread scaling on ordered threads. - If scaling is off, io-threads maintains - at least min_o_threads number of threads - and never lets any thread exit. - */ - struct iot_worker **oworkers; /* Ordered thread pool. */ - - - /* Config state for unordered threads */ - pthread_mutex_t utlock; /* Used for scaling un-ordered threads. */ - struct iot_worker **uworkers; /* Un-ordered thread pool. */ - int max_u_threads; /* Number of unordered threads will not be - higher than this. - */ - int min_u_threads; /* Number of unordered threads should not - fall below this value. */ - int u_idle_time; /* If an unordered thread does not get a - request for this amount of secs, it should - try to die. - */ - gf_boolean_t u_scaling; /* Set to IOT_SCALING_OFF if user does not want - thread scaling on unordered threads. - If scaling is off, io-threads maintains - at least min_u_threads number of threads - and never lets any thread exit. - */ - - pthread_attr_t w_attr; /* Used to reduce the stack size of the - pthread worker down from the default of - 8MiB. - */ + int32_t thread_count; + struct iot_worker **workers; + + xlator_t *this; + /* Config state for ordered threads. */ + pthread_mutex_t otlock; /* Used to sync any state that needs + to be changed by the ordered + threads. + */ + + int max_o_threads; /* Max. number of ordered threads */ + int min_o_threads; /* Min. number of ordered threads. + Ordered thread count never falls + below this threshold. + */ + + int o_idle_time; /* in Secs. The idle time after + which an ordered thread exits. + */ + gf_boolean_t o_scaling; /* Set to IOT_SCALING_OFF if user + does not want thread scaling on + ordered threads. If scaling is + off, io-threads maintains at + least min_o_threads number of + threads and never lets any thread + exit. + */ + struct iot_worker **oworkers; /* Ordered thread pool. */ + + + /* Config state for unordered threads */ + pthread_mutex_t utlock; /* Used for scaling un-ordered + threads. */ + struct iot_worker **uworkers; /* Un-ordered thread pool. */ + int max_u_threads; /* Number of unordered threads will + not be higher than this. */ + int min_u_threads; /* Number of unordered threads + should not fall below this value. + */ + int u_idle_time; /* If an unordered thread does not + get a request for this amount of + secs, it should try to die. + */ + gf_boolean_t u_scaling; /* Set to IOT_SCALING_OFF if user + does not want thread scaling on + unordered threads. If scaling is + off, io-threads maintains at + least min_u_threads number of + threads and never lets any thread + exit. + */ + + pthread_attr_t w_attr; /* Used to reduce the stack size of + the pthread worker down from the + default of 8MiB. + */ }; typedef struct iot_conf iot_conf_t; |