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;  | 
