Created
December 6, 2011 22:29
-
-
Save strax/1440334 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.mcs.common | |
import akka.actor._ | |
import akka.routing._ | |
trait CPUBoundThreadPool | |
extends DefaultActorPool | |
with SmallestMailboxSelector | |
with BoundedCapacityStrategy | |
with MailboxPressureCapacitator | |
with Filter | |
with BasicRampup | |
with BasicBackoff { | |
self: Actor => | |
// Selector: selectionCount is how many pool members to send each message to | |
override def selectionCount = 1 | |
// Selector: partialFill controls whether to pick less than selectionCount or | |
// send the same message to duplicate delegates, when the pool is smaller | |
// than selectionCount. Does not matter if lowerBound >= selectionCount. | |
override def partialFill = true | |
// BoundedCapacitor: create between lowerBound and upperBound delegates in the pool | |
override val lowerBound = 1 | |
override lazy val upperBound = Runtime.getRuntime().availableProcessors() * 2 | |
// MailboxPressureCapacitor: pressure is number of delegates with >pressureThreshold messages queued | |
override val pressureThreshold = 1 | |
// BasicRampup: rampupRate is percentage increase in capacity when all delegates are busy | |
override def rampupRate = 0.2 | |
// BasicBackoff: backoffThreshold is the percentage-busy to drop below before | |
// we reduce actor count | |
override def backoffThreshold = 0.7 | |
// BasicBackoff: backoffRate is the amount to back off when we are below backoffThreshold. | |
// this one is intended to be less than 1.0-backoffThreshold so we keep some slack. | |
override def backoffRate = 0.20 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment