Un benchmark appelé "Yardstick Apache Ignite (mètre-ignite)" est fourni pour mesurer les performances d'Ignite. Ce benchmark est écrit au-dessus du framework Yardstick. Yardstick est un cadre pour l'écriture de benchmarks et est utilisé pour créer des benchmarks pour les systèmes en cluster et d'autres systèmes distribués.
Mesurons les performances d'Ignite à l'aide de Yardstick.
Je fais référence à ce qui suit.
https://apacheignite.readme.io/docs/perfomance-benchmarking
Nous avons construit les trois serveurs suivants sur VirtualBox. Chaque serveur est CentOS7 avec 1 cœur et 3 Go de mémoire.
igniteserver1: serveur pour le cluster Ignite (192.168.10.71) igniteserver2: serveur pour le cluster Ignite (192.168.10.72) igniteserver3: Serveur pour Yardstick (192.168.10.73)
Ignite est déjà installé dans chaque environnement. Puisque Yardstick utilise celui inclus dans Ignite, il n'y a pas de construction d'environnement.
Veuillez vous référer à l'article suivant pour savoir comment installer Apache Ignite.
Premiers pas avec In-Memory Data Grid Apache Ignite (Java)
Il existe 24 points de repère standard fournis pour Ignite: Cette fois, je vais essayer 2 à 5 benchmarks.
Il existe 2 types de types Atomic et transaction x 2 types put / put + get = 4 à exécuter.
Si vous avez installé Ignite dans "/ opt / apache-ignite", le Yardstick est dans "/ opt / apache-ignite / benchmarks".
Le cluster Ignite est automatiquement démarré à partir de Yardstick et n'a pas besoin d'être démarré.
Modifiez les paramètres dans «ignite-remote-config.xml» pour vous connecter à distance au cluster Ignite et exécuter le test de performance.
cd /opt/apache-ignite/benchmarks/config
vi ignite-remote-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Ignite Spring configuration file to startup grid.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<import resource="ignite-base-config.xml"/>
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" parent="base-ignite.cfg">
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean
class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<!-- In distributed environment, replace with actual hosts IP addresses. -->
<value>192.168.10.71:47500</value>
<value>192.168.10.72:47500</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
Modifiez ensuite les paramètres de référence. Il existe un exemple de fichier appelé "benchmark-remote-sample.properties", donc copiez-le pour créer un fichier de paramètres.
cp -p benchmark-remote-sample.properties benchmark-remote-test.properties
vi benchmark-remote-test.properties
Entrez l'adresse IP du nœud Ignite dans le champ SERVER_HOSTS du fichier de propriétés.
SERVER_HOSTS=192.168.10.71,192.168.10.72
Ajoutez un benchmark à exécuter. Créez en vous référant à "benchmark.properties".
# Run configuration.
# Note that each benchmark is set to run for 300 seconds (5 min) with warm-up set to 60 seconds (1 minute).
CONFIGS="\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -nn ${nodesNum} -b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -dn IgnitePutBenchmark -sn IgniteNode -ds ${ver}atomic-put-${b}-backup,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -nn ${nodesNum} -b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -dn IgnitePutGetBenchmark -sn IgniteNode -ds ${ver}atomic-put-get-${b}-backup,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -nn ${nodesNum} -b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -dn IgnitePutTxBenchmark -sn IgniteNode -ds ${ver}tx-put-${b}-backup,\
-cfg ${SCRIPT_DIR}/../config/ignite-remote-config.xml -nn ${nodesNum} -b ${b} -w ${w} -d ${d} -t ${t} -sm ${sm} -dn IgniteGetAndPutTxBenchmark -sn IgniteNode -ds ${ver}tx-getAndPut-${b}-backup,\
"
Vous permet de SSH dans chaque nœud Ignorer du serveur qui exécute Yardstick (il semble s'appeler Driver).
# ssh-keygen -t rsa
(N'entrez pas de phrase de passe)
# ssh-copy-id [email protected]
# ssh-copy-id [email protected]
# ssh [email protected]
# ssh [email protected]
Démarrez le benchmark avec "benchmark-run-all.sh".
[root@igniteserver3 config]# ../bin/benchmark-run-all.sh ./benchmark-remote-test.properties
<02:20:00><yardstick> Creating output directory
../bin/benchmark-run-all.sh: line 73: ifconfig: command not found
<02:20:00><yardstick> Copying yardstick to the host 192.168.10.71
Warning: Permanently added '192.168.10.71' (ECDSA) to the list of known hosts.
Quand je lance le benchmark, je me fâche sans ifconfig comme ci-dessus, donc installez net-tools.
# yum install -y net-tools
Si vous le tuez avec Ctrl-C, le nœud Ignorer reste actif. Si vous réexécutez le test de performance dans cet état, les nœuds Ignore restants rejoindront également le cluster, donc si vous forcez l'arrêt, vous devez arrêter les nœuds Ignorer individuellement.
En regardant Visor, il semble que trois serveurs fonctionnent. Je pensais que l'un serait le client, mais cela ne semble pas être le cas.
visor> top
Hosts: 3
+============================================================================================================================+
| Int./Ext. IPs | Node ID8(@) | Node Type | OS | CPUs | MACs | CPU Load |
+============================================================================================================================+
| 10.0.2.15 | 1: 0908F8F4(@n0) | Server | Linux amd64 3.10.0-693.2.2.el7.x86_64 | 1 | 02:42:4A:05:5B:CD | 55.00 % |
| 127.0.0.1 | | | | | 08:00:27:76:F3:CF | |
| 172.17.0.1 | | | | | 08:00:27:E3:4A:44 | |
| 192.168.10.71 | | | | | | |
+---------------+------------------+-----------+---------------------------------------+------+-------------------+----------+
| 10.0.2.15 | 1: 02A9366F(@n1) | Server | Linux amd64 3.10.0-693.2.2.el7.x86_64 | 1 | 08:00:27:76:F3:CF | 51.33 % |
| 127.0.0.1 | | | | | 08:00:27:7F:64:16 | |
| 192.168.10.72 | | | | | | |
+---------------+------------------+-----------+---------------------------------------+------+-------------------+----------+
| 10.0.2.15 | 1: 97EFB660(@n2) | Server | Linux amd64 3.10.0-693.2.2.el7.x86_64 | 1 | 08:00:27:64:78:7A | 90.33 % |
| 127.0.0.1 | | | | | 08:00:27:76:F3:CF | |
| 192.168.10.73 | | | | | | |
+----------------------------------------------------------------------------------------------------------------------------+
Summary:
+--------------------------------------+
| Active | true |
| Total hosts | 3 |
| Total nodes | 3 |
| Total CPUs | 3 |
| Avg. CPU load | 65.56 % |
| Avg. free heap | 83.00 % |
| Avg. Up time | 00:03:58 |
| Snapshot time | 2018-08-25 02:48:02 |
+--------------------------------------+
En regardant "cache -a", le cache est stocké dans les trois serveurs comme indiqué ci-dessous. Cela signifie que le serveur de pilotes est également dans le cluster Ignorer et semble être la cible de la mesure des performances.
Cache 'atomic(@c0)':
+-----------------------------------------------------------+
| Name(@) | atomic(@c0) |
| Nodes | 3 |
| Total size Min/Avg/Max | 305670 / 333334.33 / 350590 |
| Heap size Min/Avg/Max | 0 / 1.00 / 3 |
| Off-heap size Min/Avg/Max | 305670 / 333333.33 / 350587 |
+-----------------------------------------------------------+
Nodes for: atomic(@c0)
+============================================================================================================+
| Node ID8(@), IP | CPUs | Heap Used | CPU Load | Up Time | Size | Hi/Mi/Rd/Wr |
+============================================================================================================+
| 02A9366F(@n1), 10.0.2.15 | 1 | 29.76 % | 40.33 % | 00:06:43.146 | Total: 305670 | Hi: 0 |
| | | | | | Heap: 0 | Mi: 0 |
| | | | | | Off-Heap: 305670 | Rd: 0 |
| | | | | | Off-Heap Memory: 0 | Wr: 0 |
+--------------------------+------+-----------+----------+--------------+----------------------+-------------+
| 0908F8F4(@n0), 10.0.2.15 | 1 | 24.59 % | 45.00 % | 00:06:43.395 | Total: 343743 | Hi: 0 |
| | | | | | Heap: 0 | Mi: 0 |
| | | | | | Off-Heap: 343743 | Rd: 0 |
| | | | | | Off-Heap Memory: 0 | Wr: 0 |
+--------------------------+------+-----------+----------+--------------+----------------------+-------------+
| 927AB38D(@n2), 10.0.2.15 | 1 | 20.24 % | 88.00 % | 00:00:34.269 | Total: 350590 | Hi: 0 |
| | | | | | Heap: 3 | Mi: 0 |
| | | | | | Off-Heap: 350587 | Rd: 0 |
| | | | | | Off-Heap Memory: 0 | Wr: 0 |
+------------------------------------------------------------------------------------------------------------+
Lorsque l'exécution du benchmark est terminée, le résultat est automatiquement généré sous forme de graphique.
<03:08:51><yardstick> Driver is stopped on localhost
<03:08:51><yardstick> Server is stopped on 192.168.10.71
<03:08:51><yardstick> Server is stopped on 192.168.10.72
<03:08:52><yardstick> Collecting results from the host 192.168.10.71
<03:08:53><yardstick> Collecting results from the host 192.168.10.72
<03:08:54><yardstick> Creating charts
Moving chart directory to the /opt/apache-ignite/benchmarks/output/results-20180825-024401 directory.
Il est généré sous forme de fichier HTML et s'affiche comme indiqué ci-dessous.
Avec Put, la moyenne est de 38 000 opérations (bleu), mais lorsque vous activez les transactions, vous pouvez voir que la moyenne est d'environ 11 000 (rouge). Le benchmark étant inclus dès le début, il était facile de mesurer la performance. Cette fois, je l'ai exécuté avec les paramètres par défaut, mais à l'avenir, j'aimerais apporter divers changements et vérifier les changements de performances.
YCSB (Yahoo Cloud Serving Benchmark)
YCSB (Yahoo Cloud Serving Benchmark) semble également prendre en charge Ignite.
Les résultats du benchmark utilisant YCSB sont affichés ci-dessous. Apache® Ignite™ and Apache® Cassandra™ Benchmarks: The Power of In-Memory Computing https://www.gridgain.com/resources/blog/apacher-ignitetm-and-apacher-cassandratm-benchmarks-power-in-memory-computing