Package org.directmemory.memory.test

Source Code of org.directmemory.memory.test.Starter

package org.directmemory.memory.test;

import static org.junit.Assert.assertNotNull;

import org.directmemory.measures.Ram;
import org.directmemory.memory.MemoryManager;
import org.directmemory.memory.OffHeapMemoryBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Starter {

  private static Logger logger = LoggerFactory.getLogger(MallocTests.class);

  /**
   * @param args
   */
  public static void main(String[] args) {
   
    if (args.length < 3) {
      System.out.println("DirectMemory (for real testers only!) - usage:");
      System.out.println("  java -XX:MaxDirectMemorySize=XXXXm -XmxXXXXm -XmsXXXXm -jar dm-test.jar <buffers> <Mb for each buffer> <entries>");
      return;
    }
   
    int buffers = new Integer(args[0]);
    int mb = new Integer(args[1]);
    int entries = new Integer(args[2]);
   
    logger.info("buffers: " + buffers);
    logger.info("mb: " + mb);
    logger.info("entries: " + entries);
   
    Starter starter = new Starter();
    starter.rawInsertMultipleBuffers(buffers, mb, entries);   
  }
 
  public void dump(OffHeapMemoryBuffer mem) {
    logger.info("off-heap - buffer: " + mem.pointers.get(1).bufferNumber);
    logger.info("off-heap - allocated: " + Ram.inMb(mem.capacity()));
    logger.info("off-heap - used:      " + Ram.inMb(mem.used()));
    logger.info("heap     - max: " + Ram.inMb(Runtime.getRuntime().maxMemory()));
    logger.info("heap     - allocated: " + Ram.inMb(Runtime.getRuntime().totalMemory()));
    logger.info("heap     - free : " + Ram.inMb(Runtime.getRuntime().freeMemory()));
    logger.info("************************************************");
  }

  public void rawInsert(int megabytes, int howMany) {
    OffHeapMemoryBuffer mem = OffHeapMemoryBuffer.createNew(megabytes * 1024 * 1024);
    assertNotNull(mem);
    int size = mem.capacity() / (howMany);
    size -= size / 100 * 1;
    logger.info("payload size=" + size);
    logger.info("entries=" + howMany);

    logger.info("starting...");
   
    long start = System.currentTimeMillis();

    byte[] payload = new byte[size];
    for (int i = 0; i < howMany; i++) {
      mem.store(payload);
    }
   
    logger.info("...done in " + (System.currentTimeMillis() - start) + " msecs.");
    logger.info("---------------------------------");
    dump(mem);
  }


  public void rawInsertMultipleBuffers(int buffers, int megabytes, int howMany) {
    MemoryManager.init(buffers, Ram.Mb(megabytes));
    int size = (int)(MemoryManager.capacity() / (howMany));
    size -= size / 100 * 1;
    logger.info("payload size=" + size);
    logger.info("entries=" + howMany);

    logger.info("starting...");
   
    long start = System.currentTimeMillis();

    byte[] payload = new byte[size];
    for (int i = 0; i < howMany; i++) {
      MemoryManager.store(payload);
    }
   
    logger.info("...done in " + (System.currentTimeMillis() - start) + " msecs.");
    logger.info("---------------------------------");

    for (OffHeapMemoryBuffer buf : MemoryManager.buffers) {
      dump(buf);
    }
  }


 

}
TOP

Related Classes of org.directmemory.memory.test.Starter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.