Merge lp:~david-goetz/swift/zero_logger into lp:~hudson-openstack/swift/trunk

Proposed by David Goetz
Status: Merged
Approved by: gholt
Approved revision: 299
Merged at revision: 299
Proposed branch: lp:~david-goetz/swift/zero_logger
Merge into: lp:~hudson-openstack/swift/trunk
Diff against target: 86 lines (+29/-17)
1 file modified
swift/obj/auditor.py (+29/-17)
To merge this branch: bzr merge lp:~david-goetz/swift/zero_logger
Reviewer Review Type Date Requested Status
gholt (community) Approve
Jay Payne (community) Approve
Review via email: mp+62022@code.launchpad.net

Description of the change

Changing auditor logging to show zero byte files rate and amount of time doing list dirs verses actual auditing.

To post a comment you must log in.
Revision history for this message
Jay Payne (letterj) wrote :

Looks good but one note. It doesn't display the number of quarantined files when it finishes.

Just something to think about since this will be used in cluster with many different use cases.

review: Approve
lp:~david-goetz/swift/zero_logger updated
299. By David Goetz

adding total quarantine and error to logs

Revision history for this message
Jay Payne (letterj) wrote :

Looks great. Thanks for adding the totals to the final numbers

review: Approve
Revision history for this message
gholt (gholt) wrote :
Revision history for this message
gholt (gholt) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'swift/obj/auditor.py'
2--- swift/obj/auditor.py 2011-03-16 14:55:07 +0000
3+++ swift/obj/auditor.py 2011-05-23 20:21:11 +0000
4@@ -63,46 +63,57 @@
5 begin = reported = time.time()
6 self.total_bytes_processed = 0
7 self.total_files_processed = 0
8+ total_quarantines = 0
9+ total_errors = 0
10 files_running_time = 0
11+ time_auditing = 0
12 all_locs = audit_location_generator(self.devices,
13 object_server.DATADIR,
14 mount_check=self.mount_check,
15 logger=self.logger)
16 for path, device, partition in all_locs:
17+ loop_time = time.time()
18 self.object_audit(path, device, partition)
19 self.files_running_time = ratelimit_sleep(
20 self.files_running_time, self.max_files_per_second)
21 self.total_files_processed += 1
22- if time.time() - reported >= self.log_time:
23+ now = time.time()
24+ if now - reported >= self.log_time:
25 self.logger.info(_(
26 'Object audit (%(type)s). '
27 'Since %(start_time)s: Locally: %(passes)d passed, '
28 '%(quars)d quarantined, %(errors)d errors '
29- 'files/sec: %(frate).2f , bytes/sec: %(brate).2f') % {
30+ 'files/sec: %(frate).2f , bytes/sec: %(brate).2f, '
31+ 'Total time: %(total).2f, Auditing time: %(audit).2f, '
32+ 'Rate: %(audit_rate).2f') % {
33 'type': self.auditor_type,
34 'start_time': time.ctime(reported),
35- 'passes': self.passes,
36- 'quars': self.quarantines,
37+ 'passes': self.passes, 'quars': self.quarantines,
38 'errors': self.errors,
39- 'frate': self.passes / (time.time() - reported),
40- 'brate': self.bytes_processed /
41- (time.time() - reported)})
42- reported = time.time()
43+ 'frate': self.passes / (now - reported),
44+ 'brate': self.bytes_processed / (now - reported),
45+ 'total': (now - begin), 'audit': time_auditing,
46+ 'audit_rate': time_auditing / (now - begin)})
47+ reported = now
48+ total_quarantines += self.quarantines
49+ total_errors += self.errors
50 self.passes = 0
51 self.quarantines = 0
52 self.errors = 0
53 self.bytes_processed = 0
54+ time_auditing += (now - loop_time)
55 elapsed = time.time() - begin
56 self.logger.info(_(
57- 'Object audit (%(type)s) "%(mode)s" mode '
58- 'completed: %(elapsed).02fs. '
59- 'Total files/sec: %(frate).2f , '
60- 'Total bytes/sec: %(brate).2f ') % {
61- 'type': self.auditor_type,
62- 'mode': mode,
63- 'elapsed': elapsed,
64- 'frate': self.total_files_processed / elapsed,
65- 'brate': self.total_bytes_processed / elapsed})
66+ 'Object audit (%(type)s) "%(mode)s" mode '
67+ 'completed: %(elapsed).02fs. Total quarantined: %(quars)d, '
68+ 'Total errors: %(errors)d, Total files/sec: %(frate).2f , '
69+ 'Total bytes/sec: %(brate).2f, Auditing time: %(audit).2f, '
70+ 'Rate: %(audit_rate).2f') % {
71+ 'type': self.auditor_type, 'mode': mode, 'elapsed': elapsed,
72+ 'quars': total_quarantines, 'errors': total_errors,
73+ 'frate': self.total_files_processed / elapsed,
74+ 'brate': self.total_bytes_processed / elapsed,
75+ 'audit': time_auditing, 'audit_rate': time_auditing / elapsed})
76
77 def object_audit(self, path, device, partition):
78 """
79@@ -133,6 +144,7 @@
80 except DiskFileNotExist:
81 return
82 if self.zero_byte_only_at_fps and obj_size:
83+ self.passes += 1
84 return
85 for chunk in df:
86 self.bytes_running_time = ratelimit_sleep(