[infinispan-issues] Infinispan memory
Nguyễn Hồng Nhựt
nhutnguyenhong at gmail.com
Thu Mar 10 04:00:33 EST 2011
Dear,
My command test:
In my test, I start memcached with memcached -m 1024 =>1G to prevent miss
cache
and infinispan with param:-Xmx1G
Monitor java memory used:
I use ubuntu and I see the memory column from "System Monitor(in Ubuntu) for
Infinispan.
In my test code, I only put once time for one key ( that mean no version for
data)
You can see my code test by put to memcached and infinispan with the same
code(only change port):
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import net.spy.memcached.
>
> MemcachedClient;
>
> /**
>
> * /usr/bin/memcached -m 1024 -u nobody -p 11211 -l 127.0.0.1
> * ./startServer.sh -r memcached -p 4567
> * @author root
> */
> public class ServerDemo {
>
> private static final String HOST = "localhost";
> // private static final int PORT = 4567;//inf
> private static final int PORT = 11211;//mem
> private static final int TOTAL_PUT = 500000;
> private static final int DATA_LENGTH = 1000;
>
>
> public static void main(String[] args) throws Exception {
> Thread t = new Thread() {
>
> @Override
> public void run() {
> try {
> long beginTime = System.currentTimeMillis();
> put(TOTAL_PUT, DATA_LENGTH);
> long endTime = System.currentTimeMillis() - beginTime;
> System.out.println("cost = " + endTime);
> System.gc();
> } catch (Exception e) {
> }
>
> }
> };
> t.start();
> }
>
> private static String getStringByLength(int size) {
> String s = "";
> for (int i = 0; i < size; i++) {
> s += "1";
> }
> return s;
> }
>
> private static CommentItem getCommentInstance(String content) {
> int time = new Long(System.currentTimeMillis()).intValue();
> CommentItem commentItem = new CommentItem(new Long(123), 12345,
> 456, time, content.getBytes(), (byte) 1);
> return commentItem;
> }
>
> private static byte[] comment2Bytes(CommentItem commentItem) throws
> Exception {
> DataOutputBuffer dos = new DataOutputBuffer();
> CommentItemSerializer.getInstance().serialize(commentItem, dos);
> System.out.println("dos.getData()=" + dos.getData().length);
> return dos.getData();
> }
>
> private static void putComment2Cached(int keyPrefix, byte[] bytes,
> MemcachedClient mcc) throws Exception {
> mcc.set("node_" + keyPrefix, 3600, bytes);
> byte[] result = (byte[]) mcc.get("node_" + keyPrefix);
> DataInputStream stream = new DataInputStream(new
> ByteArrayInputStream(
> result));
> CommentItem getBackItem =
> CommentItemSerializer.getInstance().deserialize(stream);
> // if (!commentItem.equals(getBackItem)) {
> // System.out.println("fail i= node_" + keyPrefix);
> // }
> }
>
> private static void put(int loop, int size) throws IOException,
> Exception {
> MemcachedClient mcc = new MemcachedClient(new
> InetSocketAddress(HOST, PORT));
> String testData = getStringByLength(size);
> CommentItem commentItem = getCommentInstance(testData);
> byte[] bytes = comment2Bytes(commentItem);
> for (int i = 0; i < loop; i++) {
> putComment2Cached(i, bytes, mcc);
> }
> }
> }
2011/3/10 Nguyễn Hồng Nhựt <nhutnguyenhong at gmail.com>
Dear,
I use ubuntu and I see the memory column from "System Monitor(in Ubuntu) for
Infinispan.
In my test code, I only put once time and get it back to see I put ok.
You can see my code test by put to memcached and infinispan with the same
code(only change port):
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import net.spy.memcached.
>
> MemcachedClient;
>
> /**
>
> * /usr/bin/memcached -m 1024 -u nobody -p 11211 -l 127.0.0.1
> * ./startServer.sh -r memcached -p 4567
> * @author root
> */
> public class ServerDemo {
>
> private static final String HOST = "localhost";
> // private static final int PORT = 4567;//inf
> private static final int PORT = 11211;//mem
> private static final int TOTAL_PUT = 500000;
> private static final int DATA_LENGTH = 1000;
>
>
> public static void main(String[] args) throws Exception {
> Thread t = new Thread() {
>
> @Override
> public void run() {
> try {
> long beginTime = System.currentTimeMillis();
> put(TOTAL_PUT, DATA_LENGTH);
> long endTime = System.currentTimeMillis() - beginTime;
> System.out.println("cost = " + endTime);
> System.gc();
> } catch (Exception e) {
> }
>
> }
> };
> t.start();
> }
>
> private static String getStringByLength(int size) {
> String s = "";
> for (int i = 0; i < size; i++) {
> s += "1";
> }
> return s;
> }
>
> private static CommentItem getCommentInstance(String content) {
> int time = new Long(System.currentTimeMillis()).intValue();
> CommentItem commentItem = new CommentItem(new Long(123), 12345,
> 456, time, content.getBytes(), (byte) 1);
> return commentItem;
> }
>
> private static byte[] comment2Bytes(CommentItem commentItem) throws
> Exception {
> DataOutputBuffer dos = new DataOutputBuffer();
> CommentItemSerializer.getInstance().serialize(commentItem, dos);
> System.out.println("dos.getData()=" + dos.getData().length);
> return dos.getData();
> }
>
> private static void putComment2Cached(int keyPrefix, byte[] bytes,
> MemcachedClient mcc) throws Exception {
> mcc.set("node_" + keyPrefix, 3600, bytes);
> byte[] result = (byte[]) mcc.get("node_" + keyPrefix);
> DataInputStream stream = new DataInputStream(new
> ByteArrayInputStream(
> result));
> CommentItem getBackItem =
> CommentItemSerializer.getInstance().deserialize(stream);
> // if (!commentItem.equals(getBackItem)) {
> // System.out.println("fail i= node_" + keyPrefix);
> // }
> }
>
> private static void put(int loop, int size) throws IOException,
> Exception {
> MemcachedClient mcc = new MemcachedClient(new
> InetSocketAddress(HOST, PORT));
> String testData = getStringByLength(size);
> CommentItem commentItem = getCommentInstance(testData);
> byte[] bytes = comment2Bytes(commentItem);
> for (int i = 0; i < loop; i++) {
> putComment2Cached(i, bytes, mcc);
> }
> }
> }
>
2011/3/10 Nguyễn Hồng Nhựt <nhutnguyenhong at gmail.com>
>
> Hi Infinispan Devs,
> I used memcached all time. I am research Infinispan and make a compare with
> memcached.
> I have just make a memory test between memcached and infinispan to choose
> which one better(best memory saved).
>
> I run Infinispan from command line: ./startServer.sh -r memcached -p 4567 (
> I am fresh download and run it with no custom any config file)
> and also memcached from command line: /usr/bin/memcached -m 1024 -u nobody
> -p 11211 -l 127.0.0.1
>
> with testcase 10000 key and every key has value is byte array with
> length= 1024
> Infinispan : => memory: 58MB
> Memcached: => memory: 14MB
>
> with testcase 500000 key and every key has value is byte array with
> length= 1024
> Infinispan : => memory: 920MB
> Memcached: => memory: 565MB
>
>
> In Infinispan, any config param familiar with memory cost? and how i
> can reduce this cost? why they have a big difference?
>
> thanks and best regards.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-issues/attachments/20110310/9a22c68f/attachment-0001.html
More information about the infinispan-issues
mailing list