RPM

Multithreaded digests

Registered by Jeff Johnson

The rpmio subsystem permits multiple digests to
be computed from I/O buffers. Its essentially
a post/pre (depending on read or write) method
that loops over digests (if any) and updates the
digest as a side-effect of performing I/O operations.

The digest update loop is/was quite simple to parallelize
using OpenMP #pragmas, and the rpmdigest tool permitted
an easy measurement of the benefits of parallelization.

A 7x speedup was measure on a 4-way SMP machine using
--alldigests (which computes >100 hashes/digests) on an I/O
stream.

The accuracy of the results was verified by inspection for several
of the common hashes run singly (but the addition of a #pragma
is not very intrusive).

Digest algorithms per-se are not parallelizable: only the loop
over multiple digests/hashes can be parallelized.

RPM itself is CPU limited by the cost of computing/verifying digests
for all installed content. However there are only a few code paths
that have more than a single digest being computed at any one
point in time in the current implementation.

Blueprint information

Status:
Complete
Approver:
Jeff Johnson
Priority:
Low
Drafter:
Jeff Johnson
Direction:
Approved
Assignee:
Jeff Johnson
Definition:
Review
Series goal:
Accepted for 5.3
Implementation:
Implemented
Milestone target:
milestone icon 5.3.0
Started by
Jeff Johnson
Completed by
Jeff Johnson

Related branches

Sprints

Whiteboard

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.