Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
None
-
None
-
9223372036854775807
Description
dmu_object_alloc() in ZFS serializes object creations with a mutex:
dmu_object_alloc(objset_t *os, dmu_object_type_t ot, int dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) { uint64_t object; uint64_t L2_dnode_count = DNODES_PER_BLOCK << (DMU_META_DNODE(os)->dn_indblkshift - SPA_BLKPTRSHIFT); dnode_t *dn = NULL; int restarted = B_FALSE; mutex_enter(&os->os_obj_lock);
this can be a bottleneck holding metadata performance much lower compared to ldiskfs where inode creation is more concurrent.
Attachments
Issue Links
- is blocking
-
LU-2600 lustre metadata performance is very slow on zfs
-
- Resolved
-
Activity
Remote Link | Original: This issue links to "Page (HPDD Community Wiki)" [ 15586 ] |
Resolution | New: Fixed [ 1 ] | |
Status | Original: Open [ 1 ] | New: Closed [ 6 ] |
Attachment | New: dmu_object_alloc-call-graph.txt [ 19104 ] |
Description |
Original:
dmu_object_alloc() in ZFS serializes object creations with a mutex: {code} dmu_object_alloc(objset_t *os, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) { uint64_t object; uint64_t L2_dnode_count = DNODES_PER_BLOCK << (DMU_META_DNODE(os)->dn_indblkshift - SPA_BLKPTRSHIFT); dnode_t *dn = NULL; int restarted = B_FALSE; mutex_enter(&os->os_obj_lock); {code} this can be a bottleneck holding metadata performance much lower compared to ldiskfs where inode creation is more concurrent. |
New:
dmu_object_alloc() in ZFS serializes object creations with a mutex: {code} dmu_object_alloc(objset_t *os, dmu_object_type_t ot, int dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) { uint64_t object; uint64_t L2_dnode_count = DNODES_PER_BLOCK << (DMU_META_DNODE(os)->dn_indblkshift - SPA_BLKPTRSHIFT); dnode_t *dn = NULL; int restarted = B_FALSE; mutex_enter(&os->os_obj_lock); {code} this can be a bottleneck holding metadata performance much lower compared to ldiskfs where inode creation is more concurrent. |
Description |
Original:
dmu_object_alloc() in ZFS serializes object creations with a mutex: dmu_object_alloc(objset_t *os, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) { uint64_t object; uint64_t L2_dnode_count = DNODES_PER_BLOCK << (DMU_META_DNODE(os)->dn_indblkshift - SPA_BLKPTRSHIFT); dnode_t *dn = NULL; int restarted = B_FALSE; mutex_enter(&os->os_obj_lock); this can be a bottleneck holding metadata performance much lower compared to ldiskfs where inode creation is more concurrent. |
New:
dmu_object_alloc() in ZFS serializes object creations with a mutex: {code} dmu_object_alloc(objset_t *os, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx) { uint64_t object; uint64_t L2_dnode_count = DNODES_PER_BLOCK << (DMU_META_DNODE(os)->dn_indblkshift - SPA_BLKPTRSHIFT); dnode_t *dn = NULL; int restarted = B_FALSE; mutex_enter(&os->os_obj_lock); {code} this can be a bottleneck holding metadata performance much lower compared to ldiskfs where inode creation is more concurrent. |
Remote Link | New: This issue links to "Page (HPDD Community Wiki)" [ 15586 ] |
Assignee | Original: WC Triage [ wc-triage ] | New: Alex Zhuravlev [ bzzz ] |
I suspect this ticket can be closed, based on landings to upstream ZFS?