Skip to content

Commit

Permalink
ocfs2/dlm: Track number of mles
Browse files Browse the repository at this point in the history
The lifetime of a mle is limited to the duration of the lockres mastery
process. While typically this lifetime is fairly short, we have noticed
the number of mles explode under certain circumstances. This patch tracks
the number of each different types of mles and should help us determine
how best to speed up the mastery process.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
  • Loading branch information
Sunil Mushran authored and Mark Fasheh committed Apr 3, 2009
1 parent 67ae1f0 commit 2041d8f
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
5 changes: 4 additions & 1 deletion fs/ocfs2/dlm/dlmcommon.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@
enum dlm_mle_type {
DLM_MLE_BLOCK,
DLM_MLE_MASTER,
DLM_MLE_MIGRATION
DLM_MLE_MIGRATION,
DLM_MLE_NUM_TYPES
};

struct dlm_lock_name {
Expand Down Expand Up @@ -156,6 +157,8 @@ struct dlm_ctxt
struct list_head mle_hb_events;

/* these give a really vague idea of the system load */
atomic_t mle_tot_count[DLM_MLE_NUM_TYPES];
atomic_t mle_cur_count[DLM_MLE_NUM_TYPES];
atomic_t local_resources;
atomic_t remote_resources;
atomic_t unknown_resources;
Expand Down
5 changes: 5 additions & 0 deletions fs/ocfs2/dlm/dlmdomain.c
Original file line number Diff line number Diff line change
Expand Up @@ -1608,6 +1608,11 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
atomic_set(&dlm->remote_resources, 0);
atomic_set(&dlm->unknown_resources, 0);

for (i = 0; i < DLM_MLE_NUM_TYPES; ++i) {
atomic_set(&dlm->mle_tot_count[i], 0);
atomic_set(&dlm->mle_cur_count[i], 0);
}

spin_lock_init(&dlm->work_lock);
INIT_LIST_HEAD(&dlm->work_list);
INIT_WORK(&dlm->dispatched_work, dlm_dispatch_work);
Expand Down
5 changes: 5 additions & 0 deletions fs/ocfs2/dlm/dlmmaster.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,9 @@ static void dlm_init_mle(struct dlm_master_list_entry *mle,
mle->u.mlename.hash = dlm_lockid_hash(name, namelen);
}

atomic_inc(&dlm->mle_tot_count[mle->type]);
atomic_inc(&dlm->mle_cur_count[mle->type]);

/* copy off the node_map and register hb callbacks on our copy */
memcpy(mle->node_map, dlm->domain_map, sizeof(mle->node_map));
memcpy(mle->vote_map, dlm->domain_map, sizeof(mle->vote_map));
Expand Down Expand Up @@ -467,6 +470,8 @@ static void dlm_mle_release(struct kref *kref)
/* detach the mle from the domain node up/down events */
__dlm_mle_detach_hb_events(dlm, mle);

atomic_dec(&dlm->mle_cur_count[mle->type]);

/* NOTE: kfree under spinlock here.
* if this is bad, we can move this to a freelist. */
kmem_cache_free(dlm_mle_cache, mle);
Expand Down

0 comments on commit 2041d8f

Please sign in to comment.