+++ /dev/null
-public class LookUpService extends Thread {
- DistributedHashMap mydhmap;
- /**
- * The thread id involved
- **/
- private int threadid;
- /**
- * The total number of threads
- **/
- private int numthreads;
-
- /**
- * The total number of transactions
- **/
- private int numtrans;
-
- /**
- * The total number of objects created
- **/
- private int nobjs;
-
- /**
- * The probability of initiating a look up
- * the read probability % between 0-99
- **/
- private int rdprob;
-
- public LookUpService() {
- }
-
- public LookUpService(DistributedHashMap dmap, int threadid, int numthreads, int nobjs, int numtrans, int rdprob) {
- mydhmap = dmap;
- this.threadid = threadid;
- this.numthreads = numthreads;
- this.nobjs = nobjs;
- this.numtrans = numtrans;
- this.rdprob = rdprob;
- }
-
- public void run() {
- Barrier barr;
- barr = new Barrier("128.195.136.162");
- //Add to the hash map
- int ntrans;
- atomic {
- for(int i = 0; i < nobjs; i++) {
- Integer key = global new Integer(threadid*nobjs+i);
- Integer val = global new Integer(i);
- Object o1 = key;
- Object o2 = val;
- mydhmap.put(o1, o2);
- }
- ntrans = numtrans;
- }
- Barrier.enterBarrier(barr);
- // Do read/writes
- for (int i = 0; i < ntrans; i++) {
- atomic {
- Random rand = new Random(i);
- int rdwr = rand.nextInt(100);
- int rwkey = rand.nextInt(nobjs*numthreads);
- Integer key = global new Integer(rwkey);
- Object o1 = key;
- if (rdwr < rdprob) {
- Object o3 = mydhmap.get(o1); //Read
- } else {
- Integer val = global new Integer(i);
- Object o2 = val;
- mydhmap.put(o1, o2); //Modify
- }
- }
- }
- }
-
- public static void main(String[] args) {
- LookUpService ls = new LookUpService();
- LookUpService.parseCmdLine(args,ls);
- BarrierServer mybarr;
-
- int nthreads = ls.numthreads;
- int[] mid = new int[8];
- mid[0] = (128<<24)|(195<<16)|(136<<8)|162;//dc-1
- mid[1] = (128<<24)|(195<<16)|(136<<8)|163;//dc-2
- mid[2] = (128<<24)|(195<<16)|(136<<8)|164;//dc-3
- mid[3] = (128<<24)|(195<<16)|(136<<8)|165;//dc-4
- mid[4] = (128<<24)|(195<<16)|(136<<8)|166;//dc-5
- mid[5] = (128<<24)|(195<<16)|(136<<8)|167;//dc-6
- mid[6] = (128<<24)|(195<<16)|(136<<8)|168;//dc-7
- mid[7] = (128<<24)|(195<<16)|(136<<8)|169;//dc-8
-
- LookUpService[] lus;
- DistributedHashMap dhmap;
- atomic {
- mybarr = global new BarrierServer(nthreads);
- }
-
- mybarr.start(mid[0]);
- atomic {
- dhmap = global new DistributedHashMap(100, 100, 0.75f);
- lus = global new LookUpService[nthreads];
- for(int i = 0; i<nthreads; i++) {
- lus[i] = global new LookUpService(dhmap, i, ls.numthreads, ls.nobjs, ls.numtrans, ls.rdprob);
- }
- }
-
- boolean waitfordone=true;
- while(waitfordone) {
- atomic { //Master aborts are from here
- if (mybarr.done)
- waitfordone=false;
- }
- }
-
- LookUpService tmp;
- /* Start threads */
- for(int i = 0; i<nthreads; i++) {
- atomic {
- tmp = lus[i];
- }
- tmp.start(mid[i]);
- }
-
- /* Join threads */
- for(int i = 0; i<nthreads; i++) {
- atomic {
- tmp = lus[i];
- }
- tmp.join();
- }
-
- System.printString("Finished\n");
- }
-
- /**
- * Parse the command line options.
- **/
- public static void parseCmdLine(String args[], LookUpService lus) {
- int i = 0;
- String arg;
- while(i < args.length && args[i].startsWith("-")) {
- arg = args[i++];
- //check options
- if(arg.equals("-N")) {
- if(i < args.length) {
- lus.numthreads = new Integer(args[i++]).intValue();
- }
- } else if(arg.equals("-nEntry")) {
- if(i < args.length) {
- lus.nobjs = new Integer(args[i++]).intValue();
- }
- } else if (arg.equals("-nTrans")) {
- if(i < args.length) {
- lus.numtrans = new Integer(args[i++]).intValue();
- }
- } else if(arg.equals("-probRead")) {
- if(i < args.length) {
- lus.rdprob = new Integer(args[i++]).intValue();
- }
- } else if(arg.equals("-h")) {
- lus.usage();
- }
- }
-
- if(lus.nobjs == 0 || lus.numtrans == 0)
- lus.usage();
- }
-
- /**
- * The usage routine which describes the program options.
- **/
- public void usage() {
- System.printString("usage: ./LookUpServiceN.bin master -N <threads> -nEntry <objects in hashmap> -nTrans <number of transactions> -probRead <read probability> \n");
- System.printString(" -N the number of threads\n");
- System.printString(" -nEntry the number of objects to be inserted into distributed hashmap\n");
- System.printString(" -nTrans the number of transactions to run\n");
- System.printString(" -probRead the probability of read given a transaction\n");
- System.printString(" -h help with usage\n");
- }
-}