summaryrefslogtreecommitdiff
path: root/swift/container
diff options
context:
space:
mode:
authorJianjian Huo <jhuo@nvidia.com>2023-05-02 20:21:08 -0700
committerJianjian Huo <jhuo@nvidia.com>2023-05-03 22:12:26 -0700
commit744e9a94afea55ddc67cf8a1e8f580f8bf5927a4 (patch)
tree9403ba7a5bb74cb0421eb795acee2b5bb70185de /swift/container
parentf99a6e5762896c7789d168bc49d8cdcb47903264 (diff)
downloadswift-744e9a94afea55ddc67cf8a1e8f580f8bf5927a4.tar.gz
Sharder: add timing metrics for individual steps and total time spent.
Change-Id: Ie2a8e4eced6688e5a98aa37c3c7b0c13fd2ddeee
Diffstat (limited to 'swift/container')
-rw-r--r--swift/container/sharder.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/swift/container/sharder.py b/swift/container/sharder.py
index ee97880cd..adff1df97 100644
--- a/swift/container/sharder.py
+++ b/swift/container/sharder.py
@@ -2331,9 +2331,13 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
return
# now look and deal with misplaced objects.
+ move_start_ts = time.time()
self._move_misplaced_objects(broker)
+ self.logger.timing_since(
+ 'sharder.sharding.move_misplaced', move_start_ts)
is_leader = node['index'] == 0 and self.auto_shard and not is_deleted
+
if state in (UNSHARDED, COLLAPSED):
if is_leader and broker.is_root_container():
# bootstrap sharding of root container
@@ -2348,11 +2352,14 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
# container has been given shard ranges rather than
# found them e.g. via replication or a shrink event,
# or manually triggered cleaving.
+ db_start_ts = time.time()
if broker.set_sharding_state():
state = SHARDING
self.info(broker, 'Kick off container cleaving, '
'own shard range in state %r',
own_shard_range.state_text)
+ self.logger.timing_since(
+ 'sharder.sharding.set_state', db_start_ts)
elif is_leader:
if broker.set_sharding_state():
state = SHARDING
@@ -2363,6 +2370,7 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
own_shard_range.state_text)
if state == SHARDING:
+ cleave_start_ts = time.time()
if is_leader:
num_found = self._find_shard_ranges(broker)
else:
@@ -2377,6 +2385,8 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
# always try to cleave any pending shard ranges
cleave_complete = self._cleave(broker)
+ self.logger.timing_since(
+ 'sharder.sharding.cleave', cleave_start_ts)
if cleave_complete:
if self._complete_sharding(broker):
@@ -2384,6 +2394,9 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
self._increment_stat('visited', 'completed', statsd=True)
self.info(broker, 'Completed cleaving, DB set to sharded '
'state')
+ self.logger.timing_since(
+ 'sharder.sharding.completed',
+ broker.get_own_shard_range().epoch)
else:
self.info(broker, 'Completed cleaving, DB remaining in '
'sharding state')
@@ -2391,6 +2404,7 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
if not broker.is_deleted():
if state == SHARDED and broker.is_root_container():
# look for shrink stats
+ send_start_ts = time.time()
self._identify_shrinking_candidate(broker, node)
if is_leader:
self._find_and_enable_shrinking_candidates(broker)
@@ -2400,6 +2414,8 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
self._send_shard_ranges(broker, shard_range.account,
shard_range.container,
[shard_range])
+ self.logger.timing_since(
+ 'sharder.sharding.send_sr', send_start_ts)
if not broker.is_root_container():
# Update the root container with this container's shard range
@@ -2408,7 +2424,10 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
# sharding a shard, this is when the root will see the new
# shards move to ACTIVE state and the sharded shard
# simultaneously become deleted.
+ update_start_ts = time.time()
self._update_root_container(broker)
+ self.logger.timing_since(
+ 'sharder.sharding.update_root', update_start_ts)
self.debug(broker,
'Finished processing, state %s%s',