taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 5d3a1b0116f439f9ff9601a58cc293be31ea6cf7
parent 4e9d7fba3eb253274264e0449036db15635e26f7
Author: MS <ms@taler.net>
Date:   Wed,  2 Aug 2023 18:29:20 +0200

Starting the LibEuFin performance tutorial.

Diffstat:
Alibeufin/performance.rst | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+), 0 deletions(-)

diff --git a/libeufin/performance.rst b/libeufin/performance.rst @@ -0,0 +1,114 @@ +This document explains how to prove the following performance +aspects that involve LibEuFin. + +1. Long-polling offered by Nexus to the Exchange Wirewatch. +2. Reduced database usage of disk space. +3. PostgreSQL short-lived database sessions. +4. Participation in the Taler benchmark. + +It is worth noting that point 2 and 3 will be proved *via* +the point 4. In particular, because the benchmark is a resource +demanding activity, its impact on the database should be +enough to reflect a worst case scenario with rerd to points 2 and 3. + +The following two sections will describe how to run +`point 1 <Long-polling>`_, and `points 2, 3, 4 <Benchmark>`_ +altogether. + +Long-polling +^^^^^^^^^^^^ + +This demonstrator is a Docker image that installs LibEuFin +and registers one user at both Sandbox and Nexus. The Nexus +user is set up to use the Taler Wire Gateway, so that they +can emulate the client side of a Taler exchange (wire-watch). + +To run the demonstrator, clone the following repository: + +.. code-block:: shell-session + + git://git.taler.net/deployment + +and build the Docker image: + +.. code-block:: shell-session + + $ cd deployment/nlnet/task5/long-poll + $ docker build -t long-poller . + +Start the ``long-poller`` image and wait after the installation +and configuration complete. The completion should end with a message +starting by ``Services are online!``. At this point, it is possible +to request Taler incoming payments and observe how such request returns +**only after** we manually send Taler money to the long-polling client. + +Give the following command to request Taler incoming payment +with the long-polling feature: + +.. code-block:: shell-session + + $ curl -v -u test-user:x "'http://localhost:5001/facades/test-facade/taler-wire-gateway/history/incoming?delta=5&long_poll_ms=100000'" + +After having observed that the previous command *actually* +long-polls, send it to the background by pressing CTRL-Z. Send +now a Taler payment to ``test-user`` with the following command. + +.. code-block:: shell-session + + $ wire_transfer + +Bring now the ``curl`` process again in the foreground, and if +it got the payment, now it shows the payment data. + +Benchmark +^^^^^^^^^ + +This demonstrator runs the Taler benchmark that relies on LibEuFin. + +Clone the following repository: + +.. code-block:: shell-session + + git://git.taler.net/deployment + +and build the Docker image: + +.. code-block:: shell-session + + $ cd deployment/nlnet/task5/benchmark + $ docker build -t benchmark . + +Run the ``benchmark`` image and wait for its completion. At this +point the demonstrator prints the benchmark information itself +(without mentioning LibEuFin) and the information concerning the +database disk usage and the database session duration. + +The database disk usage is complessive, therefore it shows how all +the services occupy database disk space. Hence if this quantity is +acceptable, then also LibEuFin share is. + +On the other hand, the database session duration concerns only LibEuFin, +and compares the *longest* database session with the whole benchmark +duration. In particular, it shows what percentage of the whole benchmark +duration is represented by the longest LibEuFin session. + + +.. TDB: should another tutorial for time-framed + bank history be written? That doesn't really + fit in any larger context, but it is rather an + isolated feature. + +.. + Clone the following repository: + + .. code-block:: shell-session + + git://git.taler.net/deployment + + and build the Docker image: + + .. code-block:: shell-session + + $ cd deployment/nlnet/task5/date-range + $ docker build -t date-range . +