Hello, I have created simple test for testing performance put operations
on single computer, can anybody explain why performance for LOCAL mode different for Indexed and non Indexed mode? Cache performance put(Integer, String)/sec: one client and 2 remote servers. CacheMode TRANSACTIONAL TRANSACTIONAL setIndexedTypes(Integer, String) ATOMIC ATOMIC setIndexedTypes(Integer, String) LOCAL 45154 107306 340627 581250 REPLICATED 3270 2865 7272 5694 PARTITIONED 6773 5403 8558 6714 VM options -Xms1g -Xmx1g Topology snapshot [ver=5, servers=2, clients=1, CPUs=8, heap=3.0GB] public class CachePerformance { private static int CACHE_SIZE =100 * 1000; private static StringCACHE_NAME ="cachePerf"; public static void main(String[] args) { try { Ignition.setClientMode(true); IgniteConfiguration igniteCfg =new IgniteConfiguration(); igniteCfg.setPeerClassLoadingEnabled(true); Ignite ignite = Ignition.start(igniteCfg); CachePerformance.execute(ignite); }catch (Throwable ex) { ex.printStackTrace(); } } public static void execute(Ignite ignite)throws Exception { Random rand =new Random(); for (CacheMode cacheMode : CacheMode.values()) { for (CacheAtomicityMode atomMode : CacheAtomicityMode.values()) { for (int indexMode =0; indexMode <=1; indexMode++) { CacheConfiguration<Integer, String> cacheCfg =new CacheConfiguration<>(CACHE_NAME); if (indexMode ==1) cacheCfg.setIndexedTypes(Integer.class, String.class); cacheCfg.setAtomicityMode(atomMode); cacheCfg.setCacheMode(cacheMode); ignite.destroyCache(CACHE_NAME); IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg); String cacheDesc ="cacheMode=" + cacheMode +", atomMode=" + atomMode +", indexMode=" + indexMode; long time = System.nanoTime(); for (int ind =0; ind <CACHE_SIZE; ind++) { Integer key = rand.nextInt(); cache.put(key,"=" + ind); } long deltaMs = (System.nanoTime() - time) /1000000; long perfSec = (deltaMs ==0) ?0 :1000 *CACHE_SIZE / deltaMs; System.out.println(cacheDesc +", Perf/Sec = " + perfSec); } } } |
I guess updating indexes is not free.
Sergi On Mon, Jul 11, 2016 at 11:48 PM, AndreyVel <[hidden email]> wrote: > Hello, I have created simple test for testing performance put operations > on single computer, > can anybody explain why performance for LOCAL mode different for Indexed > and non Indexed mode? > > > Cache performance put(Integer, String)/sec: one client and 2 > remote servers. > > CacheMode TRANSACTIONAL TRANSACTIONAL > setIndexedTypes(Integer, String) ATOMIC ATOMIC > setIndexedTypes(Integer, String) > LOCAL 45154 107306 340627 581250 > REPLICATED 3270 2865 7272 5694 > PARTITIONED 6773 5403 8558 6714 > > > VM options -Xms1g -Xmx1g > Topology snapshot [ver=5, servers=2, clients=1, CPUs=8, heap=3.0GB] > > > public class CachePerformance { > > private static int CACHE_SIZE =100 * 1000; > private static StringCACHE_NAME ="cachePerf"; > > public static void main(String[] args) { > try { > Ignition.setClientMode(true); > IgniteConfiguration igniteCfg =new IgniteConfiguration(); > igniteCfg.setPeerClassLoadingEnabled(true); > > Ignite ignite = Ignition.start(igniteCfg); > CachePerformance.execute(ignite); > }catch (Throwable ex) { > ex.printStackTrace(); > } > } > > public static void execute(Ignite ignite)throws Exception { > > Random rand =new Random(); > > for (CacheMode cacheMode : CacheMode.values()) { > > for (CacheAtomicityMode atomMode : CacheAtomicityMode.values()) { > for (int indexMode =0; indexMode <=1; indexMode++) { > > CacheConfiguration<Integer, String> cacheCfg =new > CacheConfiguration<>(CACHE_NAME); > if (indexMode ==1) > cacheCfg.setIndexedTypes(Integer.class, String.class); > > cacheCfg.setAtomicityMode(atomMode); > cacheCfg.setCacheMode(cacheMode); > > ignite.destroyCache(CACHE_NAME); > IgniteCache<Integer, String> cache = > ignite.getOrCreateCache(cacheCfg); > String cacheDesc ="cacheMode=" + cacheMode +", atomMode=" > + atomMode +", indexMode=" + indexMode; > > long time = System.nanoTime(); > for (int ind =0; ind <CACHE_SIZE; ind++) { > Integer key = rand.nextInt(); > cache.put(key,"=" + ind); > } > > long deltaMs = (System.nanoTime() - time) /1000000; > long perfSec = (deltaMs ==0) ?0 :1000 *CACHE_SIZE / > deltaMs; > System.out.println(cacheDesc +", Perf/Sec = " + perfSec); > } > } > } > |
Agree, indexes consume CPU, but as shown in the table,
performance for index and CacheMode=LOCAL more then 2x. CacheMode.CacheMode + TRANSACTIONAL = 45 K op./sec CacheMode.CacheMode + TRANSACTIONAL + setIndexedTypes = 107 K op./sec CacheMode.CacheMode + ATOMIC = 340 K op./sec CacheMode.CacheMode + ATOMIC+ setIndexedTypes = 581 K op./sec 12.07.2016 0:15, Sergi Vladykin пишет: > I guess updating indexes is not free. > > Sergi > > On Mon, Jul 11, 2016 at 11:48 PM, AndreyVel <[hidden email]> wrote: > >> Hello, I have created simple test for testing performance put operations >> on single computer, >> can anybody explain why performance for LOCAL mode different for Indexed >> and non Indexed mode? >> >> >> Cache performance put(Integer, String)/sec: one client and 2 >> remote servers. >> >> CacheMode TRANSACTIONAL TRANSACTIONAL >> setIndexedTypes(Integer, String) ATOMIC ATOMIC >> setIndexedTypes(Integer, String) >> LOCAL 45154 107306 340627 581250 >> REPLICATED 3270 2865 7272 5694 >> PARTITIONED 6773 5403 8558 6714 >> >> >> VM options -Xms1g -Xmx1g >> Topology snapshot [ver=5, servers=2, clients=1, CPUs=8, heap=3.0GB] >> >> >> public class CachePerformance { >> >> private static int CACHE_SIZE =100 * 1000; >> private static StringCACHE_NAME ="cachePerf"; >> >> public static void main(String[] args) { >> try { >> Ignition.setClientMode(true); >> IgniteConfiguration igniteCfg =new IgniteConfiguration(); >> igniteCfg.setPeerClassLoadingEnabled(true); >> >> Ignite ignite = Ignition.start(igniteCfg); >> CachePerformance.execute(ignite); >> }catch (Throwable ex) { >> ex.printStackTrace(); >> } >> } >> >> public static void execute(Ignite ignite)throws Exception { >> >> Random rand =new Random(); >> >> for (CacheMode cacheMode : CacheMode.values()) { >> >> for (CacheAtomicityMode atomMode : CacheAtomicityMode.values()) { >> for (int indexMode =0; indexMode <=1; indexMode++) { >> >> CacheConfiguration<Integer, String> cacheCfg =new >> CacheConfiguration<>(CACHE_NAME); >> if (indexMode ==1) >> cacheCfg.setIndexedTypes(Integer.class, String.class); >> >> cacheCfg.setAtomicityMode(atomMode); >> cacheCfg.setCacheMode(cacheMode); >> >> ignite.destroyCache(CACHE_NAME); >> IgniteCache<Integer, String> cache = >> ignite.getOrCreateCache(cacheCfg); >> String cacheDesc ="cacheMode=" + cacheMode +", atomMode=" >> + atomMode +", indexMode=" + indexMode; >> >> long time = System.nanoTime(); >> for (int ind =0; ind <CACHE_SIZE; ind++) { >> Integer key = rand.nextInt(); >> cache.put(key,"=" + ind); >> } >> >> long deltaMs = (System.nanoTime() - time) /1000000; >> long perfSec = (deltaMs ==0) ?0 :1000 *CACHE_SIZE / >> deltaMs; >> System.out.println(cacheDesc +", Perf/Sec = " + perfSec); >> } >> } >> } >> |
Andrey, the values clearly don’t make sense, which means that the test was
conducted incorrectly. I would rerun it. On Tue, Jul 12, 2016 at 10:38 AM, Andrey Velichko <[hidden email]> wrote: > Agree, indexes consume CPU, but as shown in the table, > performance for index and CacheMode=LOCAL more then 2x. > > CacheMode.CacheMode + TRANSACTIONAL = 45 K op./sec > CacheMode.CacheMode + TRANSACTIONAL + setIndexedTypes = 107 K op./sec > > CacheMode.CacheMode + ATOMIC = 340 K op./sec > CacheMode.CacheMode + ATOMIC+ setIndexedTypes = 581 K op./sec > > > 12.07.2016 0:15, Sergi Vladykin пишет: > > I guess updating indexes is not free. >> >> Sergi >> >> On Mon, Jul 11, 2016 at 11:48 PM, AndreyVel <[hidden email]> wrote: >> >> Hello, I have created simple test for testing performance put operations >>> on single computer, >>> can anybody explain why performance for LOCAL mode different for Indexed >>> and non Indexed mode? >>> >>> >>> Cache performance put(Integer, String)/sec: one client and 2 >>> remote servers. >>> >>> CacheMode TRANSACTIONAL TRANSACTIONAL >>> setIndexedTypes(Integer, String) ATOMIC ATOMIC >>> setIndexedTypes(Integer, String) >>> LOCAL 45154 107306 340627 581250 >>> REPLICATED 3270 2865 7272 5694 >>> PARTITIONED 6773 5403 8558 6714 >>> >>> >>> VM options -Xms1g -Xmx1g >>> Topology snapshot [ver=5, servers=2, clients=1, CPUs=8, heap=3.0GB] >>> >>> >>> public class CachePerformance { >>> >>> private static int CACHE_SIZE =100 * 1000; >>> private static StringCACHE_NAME ="cachePerf"; >>> >>> public static void main(String[] args) { >>> try { >>> Ignition.setClientMode(true); >>> IgniteConfiguration igniteCfg =new IgniteConfiguration(); >>> igniteCfg.setPeerClassLoadingEnabled(true); >>> >>> Ignite ignite = Ignition.start(igniteCfg); >>> CachePerformance.execute(ignite); >>> }catch (Throwable ex) { >>> ex.printStackTrace(); >>> } >>> } >>> >>> public static void execute(Ignite ignite)throws Exception { >>> >>> Random rand =new Random(); >>> >>> for (CacheMode cacheMode : CacheMode.values()) { >>> >>> for (CacheAtomicityMode atomMode : CacheAtomicityMode.values()) >>> { >>> for (int indexMode =0; indexMode <=1; indexMode++) { >>> >>> CacheConfiguration<Integer, String> cacheCfg =new >>> CacheConfiguration<>(CACHE_NAME); >>> if (indexMode ==1) >>> cacheCfg.setIndexedTypes(Integer.class, >>> String.class); >>> >>> cacheCfg.setAtomicityMode(atomMode); >>> cacheCfg.setCacheMode(cacheMode); >>> >>> ignite.destroyCache(CACHE_NAME); >>> IgniteCache<Integer, String> cache = >>> ignite.getOrCreateCache(cacheCfg); >>> String cacheDesc ="cacheMode=" + cacheMode +", >>> atomMode=" >>> + atomMode +", indexMode=" + indexMode; >>> >>> long time = System.nanoTime(); >>> for (int ind =0; ind <CACHE_SIZE; ind++) { >>> Integer key = rand.nextInt(); >>> cache.put(key,"=" + ind); >>> } >>> >>> long deltaMs = (System.nanoTime() - time) /1000000; >>> long perfSec = (deltaMs ==0) ?0 :1000 *CACHE_SIZE / >>> deltaMs; >>> System.out.println(cacheDesc +", Perf/Sec = " + >>> perfSec); >>> } >>> } >>> } >>> >>> > |
Free forum by Nabble | Edit this page |