|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.bigdata.service.jini.master.TaskMaster<ThroughputMaster.JobState,com.bigdata.service.jini.benchmark.ThroughputMaster.ClientTask,Void>
com.bigdata.service.jini.benchmark.ThroughputMaster
public class ThroughputMaster
Utility class for benchmarking index operations on a federation. This test harness can be parameterized for at least the following:
ISimpleSplitHandler
to ensure that separator keys are chosen for index partitions that fall on
logical row boundaries.Higher-level applications (such as the RDF DB) can introduce dependencies in the scale-out indices. For example, a write on the RDF DB must first write on TERM2ID, then on ID2TERM, and finally may write on the SPO, POS, and OSP indices in parallel.
You can examine the performance on the system at several levels:
AbstractFederation collects performance counters from the
underlying operating system using vmstat or the equivalent and
relays them to the LoadBalancerService. This is done (by default)
for all machines participating in a federation, including those running
clients.AbstractFederation collects statistics on its work queues,
including the moving average of the queue length and the moving average of
the queueing time. This information is collected for all clients (including
the DataServices) and is relayed to the LoadBalancerService.
This mechanism may be extended by an application to report additional
performance counters. Clients MAY also report their own Events.DataServers collects statistics on its internal work
queues, including the moving average of the various queue lengths and the
moving average of the queueing time for those queues. The most interesting
queue is generally the "write service", which is where tasks which will write
on an index are queued. The DataServer also reports a variety of
Events to the LoadBalancerService, most of which deal with
synchronous and asynchronous overflow handling.LoadBalancerService normally exposes an CounterSetHTTPD
instance which may be used to examine the aggregated performance counters
using a navigational model or as correlated timeseries and pivot tables
suitable for import into a worksheet program. The CounterSetHTTPD
also exposes an Event viewer. See XHTMLRenderer. In
addition, any client or service MAY optionally expose a
CounterSetHTTPD instance giving a "live" look at the performance
counters for that host and service, but only the current value for each
counter will be available (no timeseries). Finally, the
LoadBalancerService logs both the performance counters and the
Events. The performance counter logs are available for post-mortem
analysis using CounterSetHTTPDServer. The Events are logged
in a tab-delimited format and may be imported into a worksheet for further
analysis.
While bigdata does not report metrics via JMX, you can enable remote JMX and
examine JMX counters for JVMs throughout the federation. This can be done
trivially if you are running one DataServer per host since you can
pre-assign the port number for remote JMX in the Configuration file.
| Nested Class Summary | |
|---|---|
static interface |
ThroughputMaster.ConfigurationOptions
Configuration options for the ThroughputMaster. |
static class |
ThroughputMaster.JobState
State describing the job to be executed. |
static class |
ThroughputMaster.Task
Run an unisolated operation. |
| Nested classes/interfaces inherited from class com.bigdata.service.jini.master.TaskMaster |
|---|
TaskMaster.DiscoveredServices |
| Field Summary |
|---|
| Fields inherited from class com.bigdata.service.jini.master.TaskMaster |
|---|
fed, log |
| Constructor Summary | |
|---|---|
protected |
ThroughputMaster(JiniFederation fed)
|
| Method Summary | |
|---|---|
protected void |
beginJob(ThroughputMaster.JobState jobState)
Extended to register a scale-out index in the specified namespace. |
static void |
main(String[] args)
Runs the master. |
protected com.bigdata.service.jini.benchmark.ThroughputMaster.ClientTask |
newClientTask(int clientNum)
Return a client to be executed on a remote data service. |
protected ThroughputMaster.JobState |
newJobState(String component,
net.jini.config.Configuration config)
Return a TaskMaster.JobState. |
| Methods inherited from class com.bigdata.service.jini.master.TaskMaster |
|---|
allDone, attachPerformanceCounters, awaitAll, call, cancelAll, detachPerformanceCounters, error, execute, forceOverflow, getFederation, getJobState, innerMain, notifyOutcome, runJob, setupJob, startClients, success, tearDownJob |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected ThroughputMaster(JiniFederation fed)
throws net.jini.config.ConfigurationException
fed -
net.jini.config.ConfigurationException| Method Detail |
|---|
public static void main(String[] args)
throws net.jini.config.ConfigurationException,
ExecutionException,
InterruptedException,
org.apache.zookeeper.KeeperException
args - The Configuration and any overrides.
net.jini.config.ConfigurationException
ExecutionException
InterruptedException
org.apache.zookeeper.KeeperException
protected void beginJob(ThroughputMaster.JobState jobState)
throws Exception
beginJob in class TaskMaster<ThroughputMaster.JobState,com.bigdata.service.jini.benchmark.ThroughputMaster.ClientTask,Void>ExceptionTaskMaster.ConfigurationOptions.INDEX_DUMP_DIR,
TaskMaster.ConfigurationOptions.INDEX_DUMP_NAMESPACE
protected ThroughputMaster.JobState newJobState(String component,
net.jini.config.Configuration config)
throws net.jini.config.ConfigurationException
TaskMasterTaskMaster.JobState.
newJobState in class TaskMaster<ThroughputMaster.JobState,com.bigdata.service.jini.benchmark.ThroughputMaster.ClientTask,Void>component - The component.config - The configuration.
TaskMaster.JobState.
net.jini.config.ConfigurationExceptionprotected com.bigdata.service.jini.benchmark.ThroughputMaster.ClientTask newClientTask(int clientNum)
TaskMasterIBigdataFederation when it executes on the
remote data service if it implements IDataServiceCallable. You
can use AbstractClientTask as a starting point.
newClientTask in class TaskMaster<ThroughputMaster.JobState,com.bigdata.service.jini.benchmark.ThroughputMaster.ClientTask,Void>clientNum - The client number.
AbstractClientTask
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||