summaryrefslogtreecommitdiffstats
path: root/xlators/performance/io-threads/src/io-threads.h
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/performance/io-threads/src/io-threads.h')
-rw-r--r--xlators/performance/io-threads/src/io-threads.h181
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;