summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-07-10 13:24:25 +0100
committerMatthew Sackman <matthew@lshift.net>2009-07-10 13:24:25 +0100
commit6e324890acea784e06eb413a0adedd6d3c27d299 (patch)
tree160b29d10ebe625c3490e7ce7997a4e72bca2536 /include
parent7ad7748202180cbf25322a133757cce143f71d71 (diff)
downloadrabbitmq-server-git-6e324890acea784e06eb413a0adedd6d3c27d299.tar.gz
prefetch part 1. When a mixed_queue sees that the next item in its queue is on disk, it issues a low priority prefetch instruction to the disk queue, which populates the disk_queue's cache. Note that this shouldn't impact on memory as by virtue of the mixed_queue being in mixed mode, the contents of the queue are already accounted for in memory even though they were on disk. The effect of this is that when the deliver comes, it doesn't need to go to disk to read the message as the messages are already in cache. Testing:
A 100,000 * 1Kb msg queue takes 15 seconds to drain (basic.get, noack) when the messages are in memory, in the mixed queue. On disk, without prefetch, takes 32 seconds On disk, with prefetch, cache hot, takes 25 seconds. The next step is to get the disk queue to signal back to the queue that the prefetch is done and for the queue to grab the messages from the disk_queue in advance, thus meaning that on delivery, all that is needed is the async acks being sent to the disk_queue (assuming the messages are not actually persistent).
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions