<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Weight-based Heterogeneous Load Balancing Cluster with in Fuzzy Raspberry Pi Estimation of MPICH Node Computational Performance</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dmytro Zubov</string-name>
          <email>dzubov@ieee.org</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andrey Kupin</string-name>
          <email>kupin@knu.edu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Kryvyi Rih National University</institution>
          ,
          <addr-line>11 Matusevycha St., Kryvyi Rih, 50027</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Central Asia</institution>
          ,
          <addr-line>138 Toktogul St., Bishkek, 720001</addr-line>
          ,
          <country country="KG">Kyrgyzstan</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Dynamic load balancing is a key methodology that is used to speed up computing clusters nowadays. The work sharing and the work stealing are two opposite algorithms with various implementations based on predefined metrics like performance, response time, fault tolerance, resource utilization, and scalability. For the heterogeneous soft-/hardware in the Raspberry Pi MPICH cluster, weight-based load balancing is the most efficient approach since different parameters such as the type of CPU and OS, RAM, workload, microSD card capacity, power consumption, and OS release date can be taken into consideration. These parameters are described numerically and linguistically, and hence the fuzzy logic is employed to estimate the performance weights of the cluster nodes. Then, this information is used to distribute the workload among the cluster nodes to minimize the execution time. In this project, fuzzification, formation of fuzzy rules, fuzzy inference, and defuzzification are applied to find the performance weights. The defuzzification is based on the multiplication operation. In the cluster with two Raspberry Pi 4B boards with 2 GB RAM and Raspberry Pi 64-bit OS with desktop and one Raspberry Pi 3B board with 1 GB RAM and Raspberry Pi 32-bit OS Lite, recommended performance weights are (5, 5, 1), respectively. The Python program for the prime numbers finding algorithm implements the proposed weight-based load balancing approach that is approximately five times faster than the basic algorithm with equal loading for the maximum integer number 300000. Weight-based load balancing, MPICH cluster, fuzzy logic, Raspberry Pi ICTERI-2021, Vol I: Main Conference, PhD Symposium, Posters and Demonstrations, September 28 - October 2, 2021, Kherson, Ukraine</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>MPICH is a free high-performance implementation of the Message Passing Interface (MPI) standard
[1]. It has been tested on several platforms such as Linux, Mac OS, Solaris, and Windows. As of June
2016, this technology was exclusively used on nine of the top ten supercomputers, including Sunway
TaihuLight which is ranked third in the TOP500 list as of November 2018. Concerning power
consumption and performance, the Raspberry Pi MPICH cluster [2-4] is one of the most efficient
approaches nowadays. Because of the heterogeneous soft-/hardware, e.g., Raspberry Pi 32/64-bit and
Ubuntu operating systems (OSs) and Raspberry Pi 3B/3B+/4B boards with 1/2/4/8 GB RAM, the
dynamic load balancing is one of the main challenges that require to distribute the workload across all
the nodes to minimize the execution time.</p>
      <p>The work sharing and the work stealing are two opposite algorithms in dynamic load balancing [5]
that can be split up into various implementations based on predefined metrics such as throughput,
response time, overhead, performance, fault tolerance, migration time, resource utilization, and</p>
      <p>2021 Copyright for this paper by its authors.
scalability [6]. Biased random sampling, active clustering, honeybee foraging, join idle queue, load
balance min-min, and ant colony optimization are examples of these implementations [6]. Since the
soft-/hardware configuration of the MPICH cluster is not fixed, active clustering is the most suitable
approach, where the master node analyzes the performance of existing nodes and then distributes the
workload in accordance with that. This approach is implemented in Oracle clusters as the weight-based
load balancing [7]. For the initial phase, when existing nodes start communicating with each other, the
Python software development is a trivial task: two blocking, send and recv, and two non-blocking, isend
and irecv, communication methods send and receive data, respectively [8]. Hence, the key problem is
the calculation of the performance weights associated with the cluster nodes. Concerning the processor
performance, this problem is solved by the Exploitation of the Fastest Processor method which is a
centralized algorithm for dynamic load distribution of parallel applications based on the Single Program
Multiple Data paradigm [9]. However, other parameters, e.g., OS and RAM, are not taken into
consideration in [9].</p>
      <p>Performance weights are calculated based on heterogeneous parameters such as processor, OS,
RAM, capacity of MicroSD card, current workload on the node. These parameters can be described
numerically, e.g., 1 GB RAM, and linguistically, e.g., processor ARM Cortex-A53 1.2 GHz is
“significantly below norm”, and hence the fuzzy logic [10-19] is proposed to estimate the performance
weights associated with the cluster nodes.</p>
      <p>This paper presents an approach of the performance weights assessment using fuzzy logic to
optimize the workload distribution on the nodes in the Raspberry Pi MPICH heterogeneous cluster. The
prime numbers funding algorithm is proposed to demonstrate a common technique used in parallel
programming – solving a smaller case to speed up the solution of the full problem [20]. The modified
version of the Python program to find prime numbers [4] was developed to speed up the Raspberry Pi
MPICH heterogeneous cluster.</p>
      <p>The paper is organized as follows: In Section 2, a basic implementation of the prime numbers finding
algorithm with equal load balancing and its performance evaluation is presented, as well as Mamdani,
Sugeno, and Tsukamoto fuzzy inference systems are compared and analyzed for the performance
weights assessment. In Section 3, the fuzzy inference for the performance weights assessment of the
Raspberry Pi MPICH heterogeneous cluster nodes is implemented, as well as equal and weight-based
load balancing approaches are compared using the prime numbers finding algorithm. Conclusions are
summarized in Section 4.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Background</title>
      <sec id="sec-2-1">
        <title>2.1. Prime Numbers Finding Algorithm: Basic Implementation with Equal Load Balancing and Its Performance Evaluation</title>
        <p>Python program [4] generates the first prime number 1, but it must be 2; other values are correct.</p>
        <p>The Raspberry Pi rack mount and the router DIR-300A with a built-in 4-port switch are shown in
Figure 2. Master, second, and third nodes have IP addresses 192.168.0.92, 192.168.0.41, and
192.168.0.13, respectively. Boards are connected only by Ethernet cables via the router DIR-300A and
the power supply since they are remotely controlled by the Secure Shell (SSH) protocol, as well as the
standard VNC (Virtual Network Computing) server was installed on the master node to control the
Raspberry Pi 4B through the RealVNC remote access software [21]. The cluster has a two-dimensional
mesh topology [22].</p>
        <p>
          Execution times for one (data series 1, performance weights (
          <xref ref-type="bibr" rid="ref1">1, 0, 0</xref>
          ), Raspberry Pi 4B board), two
(data series 2, performance weights (
          <xref ref-type="bibr" rid="ref1 ref1">1, 1, 0</xref>
          ), two Raspberry Pi 4B boards), and three (data series 3,
performance weights (
          <xref ref-type="bibr" rid="ref1 ref1 ref1">1, 1, 1</xref>
          ), two 4B and one 3B Raspberry Pi boards) cluster nodes are presented in
Figure 3 at different values of the variable end_number. Here, the execution time for a specific point
is the average of three appropriate values. Maximum two MPICH commands mpiexec [4] and an
additional Python program were run in parallel in different terminals on Raspberry Pi 4B boards and
only one MPICH Python program was run on Raspberry Pi 3B board to avoid overloading and
overheating of the CPU and RAM. Analysis of the data series presented in Figure 3 shows that the basic
implementation of the prime numbers finding algorithm has the lowest performance with three nodes.
This result does not contradict Amdahl's law [22] since the third node with Raspberry Pi 3B board is
significantly slower than the first and the second ones. The fluctuations in data series can be explained
by the non-linear CPU speed-temperature dependencies of Raspberry Pi boards [23] and different
Ethernet connectivity (maximum throughput 300 Mbps for 3B and 1 Gbps for 4B), as well as the
unstable and low-speed network bandwidth leads to substantial performance degradation in the grid
environment [24, 25].
        </p>
        <p>Figure 4 represents the Raspberry Pi command top [26] showing the list of processes currently
running on the cluster nodes with equally distributed workload: the processor’s share of the CPU time
is close to 0 % for the second node (finished its part), it is usually around 10 % for the first node
(finished its part and waiting to gather data), and it is around 25 % for the third node, i.e., the first and
the second nodes finish their parts and then they wait for the third node to accomplish its work.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Comparative Analysis of Mamdani, Sugeno, and Tsukamoto Fuzzy Inference Systems for the Performance Weights Assessment</title>
        <p>The fuzzy logic theory was introduced by Dr. Lotfi Zadeh in 1965 and was advanced by many other
researchers since that time, e.g., [11-18]. In fuzzy logic, four main stages are fuzzification, formation
of fuzzy rules, fuzzy inference, and defuzzification. Fuzzy inference methods that are generally used
are Mamdani, Sugeno, and Tsukamoto. Concerning the defuzzification, they can be differentiated as
follows: fuzzy Tsukamoto uses the centralized mean algorithm, fuzzy Mamdani uses the centroid
method [17], fuzzy Sugeno generates fuzzy singleton values [19]. Many other defuzzification methods
have been proposed, but none of them generates the output for the common sense of knowledge
modeling [19]. The computational results of defuzzification often conflict [13-18], as well as they do
not have a uniform framework [19].</p>
        <p>In this project, the approach [10-12], where the defuzzification is based on the multiplication
operation, is proposed to estimate the performance weights of the cluster nodes. The cluster node j,
j[1,N] and N is the general number of cluster nodes, is described by the vector   = {  1,   2, … ,   },
K is the general number of soft-/hardware characteristics. Fuzzy set gi, i[1,M] and M is the general
number of the cluster parameters zi such as processor/OS/RAM, contains the requirements to the cluster
parameters zi. Components gi, G={g1,g2,…,gM}, are specified by the membership functions
i(zi)→[0,1]. Finding vector G is the solution represented by the fuzzy set V={vj} that is the intersection
of {Xj} and G. Estimation of the performance weights includes the following steps:
1. Determine set {Xj}, j[1,N].</p>
        <p>2. Calculate membership functions i(zi) as follows (zij must be positive since the cluster
soft/hardware are described by positive numbers in this project):
  = 
  =

 
 
{  }</p>
        <p>
          , if the best characteristic equals max{zij};
{  }, if the best characteristic equals min{zij}.
(
          <xref ref-type="bibr" rid="ref1">1</xref>
          )
(
          <xref ref-type="bibr" rid="ref2">2</xref>
          )
Linguistic variables in the membership functions i(zi) (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) are as follows:
- “significantly above norm” that is equal to 1,
- “above norm” that is equal to 3,
- “norm” that is equal to 5,
- “below norm” that is equal to 3,
- “significantly below norm” that is equal to 1.
        </p>
        <p>
          Membership functions (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) calculate ij, 0ij1, and hence the following rule must be taken
into consideration: if 12, then   1 ≤   2.
intervals i(zi)→[0,1].
        </p>
        <p>4. Find vector V as follows:

3. Convert the vector {Xj} to the vector {zi} of the cluster characteristics, and then to the fuzzy
where i – weights that represent the ranks of requirements {zi}.</p>
        <p>5. Calculate the performance weights of the cluster nodes using vector V.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Weight-Based Load Balancing in Raspberry Pi MPICH Heterogeneous</title>
    </sec>
    <sec id="sec-4">
      <title>Cluster with Fuzzy Estimating of the Nodes Computational Performance</title>
      <p>3.1.</p>
      <sec id="sec-4-1">
        <title>Fuzzy Inference for the Performance Weights Assessment of the Raspberry Pi MPICH</title>
      </sec>
      <sec id="sec-4-2">
        <title>Heterogeneous Cluster Nodes</title>
        <p>Linguistic and numeric variables zij and weights i are shown in Table 1 for the Raspberry Pi MPICH
heterogeneous cluster soft-/hardware. Data presented in Table 1 is the authors' subjective view based
on the practical experience with respect to the performance.</p>
        <p>
          Performance weights of the cluster nodes are calculated in Table 2. Analysis of the fuzzy set V shows
that the calculated output variable for the third node is approximately five times less compared with the
first and the second nodes: 0.975/0.2294.258 and 0.985/0.2294.301, i.e., the closest larger integer
number is 5. Hence, recommended performance weights are (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          ) for the first, the second, and the
third nodes, respectively.
3.2.
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>Prime Numbers Finding Algorithm: Weight-Based Load Balancing Implementation and Its Performance Evaluation</title>
        <p>
          The prime numbers finding algorithm with the weight-based load balancing using recommended
performance weights for the Raspberry Pi MPICH cluster nodes can schematically be represented as
the pseudocode in Figure 5. This algorithm loads all the working cluster nodes in accordance with their
performance weights. If end_number equals 100 and the performance weights are (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          ), three
nodes analyze numbers as follows:
        </p>
        <p>1. Master node, Raspberry Pi 4B board, my_rank_new={6, 7, 8, 9, 10}: 13, 35, 57, 79, 15, 37, 59,
81, 17, 39, 61, 83, 19, 41, 63, 85, 21, 43, 65, 87. The master node is loaded less than the second node
that compensates the additional workload related to acquiring and gathering data from other nodes.</p>
        <p>2. Second node, Raspberry Pi 4B board, my_rank_new={0, 1, 2, 3, 4}: 1, 23, 45, 67, 89, 3, 25, 47,
69, 91, 5, 27, 49, 71, 93, 7, 29, 51, 73, 95, 9, 31, 53, 75, 97.</p>
        <p>3. Third node, Raspberry Pi 3B board, my_rank_new={5}: 11, 33, 55, 77, 99.</p>
        <p>
          The developed Python program was executed on the Raspberry Pi MPICH cluster with the
abovementioned three nodes. The execution times for performance weights (
          <xref ref-type="bibr" rid="ref1 ref4 ref4">4, 4, 1</xref>
          ), (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          ), and (
          <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
          )
are presented in Figure 6 at different values of the variable end_number: dash, grey, and black lines,
respectively. Here, the execution time for a specific point is the average of three appropriate values as
well. Also, maximum two MPICH commands mpiexec and an additional Python program were run
in parallel in different terminals on Raspberry Pi 4B boards, and only one MPICH Python program was
run on Raspberry Pi 3B board to avoid overloading and overheating of the CPU and RAM. Analysis of
the data series presented in Figure 6 shows that the mean signed deviation for data series with
performance weights (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          )-(
          <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
          ) is -3.01 sec and (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          )-(
          <xref ref-type="bibr" rid="ref1 ref4 ref4">4, 4, 1</xref>
          ) is -155.74 sec, i.e., data series
with recommended performance weights (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          ) has less average execution time across the entire set
of all observations. Also, a three-tuple (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          ) is preferable compared with (
          <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
          ) since it has less
workload for the first and the second nodes along with a greater workload for the third node that
corresponds with Table 2. This result can be explained by the minimum time-out of the third node with
a low-performance Raspberry Pi 3B board. The fluctuations in data series appear because of unstable
network bandwidth and non-linear CPU speed-temperature dependencies of Raspberry Pi boards too.
        </p>
        <sec id="sec-4-3-1">
          <title>ARM Cortex-A72</title>
          <p>1.5 GHz (“norm”;
z11=5)</p>
        </sec>
        <sec id="sec-4-3-2">
          <title>Raspberry Pi 64-bit</title>
          <p>(“norm”; z21=5)</p>
        </sec>
        <sec id="sec-4-3-3">
          <title>2 GB LPDDR4 SDRAM</title>
          <p>(“norm”; z31=5)</p>
        </sec>
        <sec id="sec-4-3-4">
          <title>Master node with</title>
          <p>worker load (“above
norm”; z41=3)
8 GB (z51=8)
6.4 W (z61=6.4)</p>
          <p>August 24, 2020 August 24, 2020
(“below norm”; z71=3) (“below norm”; z72=3)
January 11, 2021
(“norm”; z73=5)</p>
        </sec>
        <sec id="sec-4-3-5">
          <title>ARM Cortex-A72 ARM Cortex-A53</title>
          <p>1.5 GHz (“norm”; z12=5) 1.2 GHz (“significantly
below norm”; z13=1)</p>
        </sec>
        <sec id="sec-4-3-6">
          <title>Raspberry Pi 64-bit Raspberry Pi 32-bit</title>
          <p>(“norm”; z22=5) (“significantly below
norm”; z23=1)</p>
        </sec>
        <sec id="sec-4-3-7">
          <title>2 GB LPDDR4 SDRAM 1 GB LPDDR2 SDRAM</title>
          <p>(“norm”; z32=5) (“below norm”; z33=3)
Worker node (“norm”; Worker node (“norm”;
z42=5) z43=5)
8 GB (z52=8)
6.4 W (z62=6.4)
4 GB (z53=4)</p>
        </sec>
      </sec>
      <sec id="sec-4-4">
        <title>3.3. Prime Numbers Finding Algorithm: Comparison of the Basic Equal Load and the</title>
      </sec>
      <sec id="sec-4-5">
        <title>Weight-Based Load Balancing Implementations</title>
        <p>
          Analysis of the execution times for equal and weight-based load balancing implementations of the
prime numbers finding algorithm, Figure 3 and Figure 6 respectively, shows the following outcomes:
1. The value of speedup for the weight-based load balancing implementation with performance
weights (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
          ) compared with the equal load balancing with performance weights
(
          <xref ref-type="bibr" rid="ref1 ref1 ref1">1, 1, 1</xref>
          ) is continuously growing approximately from 1 at the end_number 1000 to 5 at the maximum
end_number that is equal 300000.
        </p>
        <p>
          2. The weight-based load balancing implementation with performance weights (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
          )
is slightly faster, around 5 %, than the equal load balancing with performance weights (
          <xref ref-type="bibr" rid="ref1 ref1">1, 1, 0</xref>
          ) for the
end_number values greater than 25000 until maximum value 300000. The mean signed deviation for
data series with performance weights (
          <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
          )-(
          <xref ref-type="bibr" rid="ref1 ref1">1, 1, 0</xref>
          ) is -10.42 sec. Larger execution times for prime
numbers less than 25000 represent the classical scalability problem [22] and its effect on the
performance in parallel computing: for some cases, the intelligent parallel algorithms work slower
compared with the methods without an intelligent component since they need additional time to analyze
existing nodes and distribute the workload in accordance with the input dataset(s).
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>4. Summary and Conclusion</title>
      <p>Weight-based load balancing in the Raspberry Pi MPICH heterogeneous cluster was implemented using
the fuzzy estimating of performance weights. Fuzzy variables are the type of CPU and OS, RAM,
workload, microSD card capacity, power consumption, and OS release date. Four main stages of
fuzzification, formation of fuzzy rules, fuzzy inference, and defuzzification are applied to calculate the
performance weights of the cluster nodes. In this project, the defuzzification is based on the
multiplication operation.</p>
      <p>
        The cluster consists of two Raspberry Pi 4B boards with 2 GB RAM and Raspberry Pi 64-bit OS
with desktop and one Raspberry Pi 3B board with 1 GB RAM and Raspberry Pi 32-bit OS Lite. The
Python program for the prime numbers finding algorithm is a test example of the developed approach:
1. Recommended weight-based load balancing with performance weights (
        <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
        ) is preferable
compared with the next nearest (
        <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
        ) and (
        <xref ref-type="bibr" rid="ref1 ref4 ref4">4, 4, 1</xref>
        ) since three-tuple (
        <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
        ) has less average
execution time across the entire set of all observations. The mean signed deviation for data series with
performance weights (
        <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
        )-(
        <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
        ) is -3.01 sec and (
        <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
        )-(
        <xref ref-type="bibr" rid="ref1 ref4 ref4">4, 4, 1</xref>
        ) is -155.74 sec, i.e., data series
with recommended performance weights (
        <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
        ) has less average execution time across the entire set
of all observations.
      </p>
      <p>
        2. The value of speedup for the weight-based load balancing implementation with performance
weights (
        <xref ref-type="bibr" rid="ref1 ref5 ref5">5, 5, 1</xref>
        ) and (
        <xref ref-type="bibr" rid="ref1 ref6 ref6">6, 6, 1</xref>
        ) compared with the equal loading on all nodes is continuously growing
approximately from 1 at the end_number 1000 to 5 at the maximum end_number 300000.
      </p>
      <p>Since load balancing is an important task not only for the considered Raspberry Pi MPICH
heterogeneous cluster but also for distributed computing systems in general, obtained results may be
used in a wide spectrum of parallel programming applications.</p>
      <p>The most likely prospect of the presented weight-based load balancing method is the development
of a multithread Python application.</p>
    </sec>
    <sec id="sec-6">
      <title>5. Acknowledgements</title>
      <p>This paper and the research behind it could be much complicated without the support of universities
where authors have been conducting the presented project. Authors sincerely appreciate the
management and colleagues of the University of Central Asia (Kyrgyzstan) and the Kryvyi Rih National
University (Ukraine) for all their patience and kind assistance in the completion of this work.</p>
    </sec>
    <sec id="sec-7">
      <title>6. References</title>
      <p>[11] M.M. Gupta, Soft Computing and Intelligent Systems: Theory and Applications, N.K. Sinha (Ed.),</p>
      <p>Academic Press, San Diego, CA, USA, 2000. doi: 10.1016/B978-012646490-0/50011-1.
[12] N.L. Prokhorov, Supervisory Computer Control Systems, Finances &amp; Statistics Press Inc.,</p>
      <p>
        Moscow, 2003.
[13] A. Saepullah, R.S. Wahono, Comparative Analysis of Mamdani, Sugeno And Tsukamoto Method
of Fuzzy Inference System for Air Conditioner Energy Saving, J. of Intelligent Systems 2(
        <xref ref-type="bibr" rid="ref1">1</xref>
        ), 2015,
pp. 143-147.
[14] T. Yulianto, S. Komariyah, N. Ulfaniyah, Application of Fuzzy Inference System by Sugeno
Method on Estimating of Salt Production, in: Proceedings of AIP conference 1867, AIP
Publishing, Melville, NY, 2017, pp. 020039-1 – 020039-7. doi: 10.1063/1.4994442.
[15] A. Yunan, M. Ali, Study and Implementation of the Fuzzy Mamdani and Sugeno Methods in
Decision Making on Selection of Outstanding Students at the South Aceh Polytechnic, J. Inovasi
Teknologi dan Rekayasa 2(
        <xref ref-type="bibr" rid="ref5">5</xref>
        ), 2020, pp. 152-164.
[16] F. Cavallaro, A Takagi-Sugeno Fuzzy Inference System for Developing a Sustainability Index of
      </p>
      <p>
        Biomass, J. Sustainability 7, 2015, pp. 12359-12371. doi: 10.3390/su70912359.
[17] E. Sonalitha, B. Nurdewanto, S. Ratih, N.R. Sari, A.B. Setiawan, P. Tutuko, Comparative
Analysis of Tsukamoto and Mamdani Fuzzy Inference System on Market Matching to Determine
the Number of Exports for MSMEs. In: Proceedings of the 9th EECCIS Electrical Power,
Electronics, Communications, Controls, and Informatics Seminar, IEEE, Batu, East Java,
Indonesia, 2018, pp. 440-445. doi: 10.1109/EECCIS.2018.8692989.
[18] Adriyendi, Fuzzy Logic using Tsukamoto Model and Sugeno Model on Prediction Cost,
International J. of Intelligent Systems and Applications 6(
        <xref ref-type="bibr" rid="ref10">10</xref>
        ), 2018, pp. 13-21. doi:
10.5815/ijisa.2018.06.02.
[19] D.S.K. Mendis, H.U.W. Ratnayake, A.S. Karunananda, U. Samarathunga, A Statistical Fuzzy
Inference System by PCA Based Defuzzification for the Improvement of Sugeno Defuzzification
Method, J. of Engineering and Technology of The Open University of Sri Lanka (JET-OUSL)
1(
        <xref ref-type="bibr" rid="ref7">7</xref>
        ), 2019, pp. 38-52.
[20] G.E. Blelloch, Programming Parallel Algorithms, Communications of the ACM 39(
        <xref ref-type="bibr" rid="ref3">3</xref>
        ), 1996,
pp. 85-97. doi: 10.1145/227234.227246.
[21] Raspberry Pi Foundation: VNC (Virtual Network Computing), n.d. URL:
https://www.raspberrypi.org/documentation/remote-access/vnc/.
[22] M.A. Fienup, Scalability Study in Parallel Computing, Retrospective Theses and Dissertations,
10900, 1995. URL: https://lib.dr.iastate.edu/rtd/10900.
[23] A. Bate, Thermal Testing Raspberry Pi 4: Raspberry Pi Foundation, 2019. URL:
https://www.raspberrypi.org/blog/thermal-testing-raspberry-pi-4/.
[24] Y. Cheng, D. Xu, G. Chen, L. Wang, W. Wu, Performance Analysis of Cluster File System on
Linux. In: Proceedings of Computing in High Energy and Nuclear Physics Conference, CERN,
Switzerland 2005. URL:
https://indico.cern.ch/event/0/contributions/1294347/attachments/602/1146/chengyaodongid72.pdf. doi: 10.5170/CERN-2005-002.1176.
[25] C. Yu, Scheduling and Resource Management for Complex Systems: From Large-Scale
Distributed Systems to Very Large Sensor Networks (Publication No. CFE0002907) [Doctoral
dissertation, University of Central Florida], Electronic Theses and Dissertations, 2004-2019, 2010.
      </p>
      <p>URL: https://stars.library.ucf.edu/etd/4005.
[26] Geek University: List Processes in Real-time, n.d. URL:
https://geek-university.com/raspberrypi/list-processes-in-real-time/.
[27] Power Consumption Benchmarks: Drupal 9 on a cluster of Raspberry Pis, n.d. URL:
https://www.pidramble.com/wiki/benchmarks/power-consumption.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>High-Performance Portable</surname>
            <given-names>MPI</given-names>
          </string-name>
          : MPICH Overview, n.d. URL: https://www.mpich.org/about/overview/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Pajankar</surname>
          </string-name>
          ,
          <article-title>Raspberry Pi Supercomputing and Scientific Programming: MPI4PY, NumPy, and SciPy for Enthusiasts</article-title>
          , Apress, New York, NY,
          <year>2017</year>
          . doi:
          <volume>10</volume>
          .1007/978-1-
          <fpage>4842</fpage>
          -2878-4.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.J.</given-names>
            <surname>Cox</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.T.</given-names>
            <surname>Cox</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.P.</given-names>
            <surname>Boardman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.J.</given-names>
            <surname>Johnston</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Scott</surname>
          </string-name>
          ,
          <string-name>
            <surname>N.S.</surname>
          </string-name>
          <article-title>O'Brien, Iridis-pi: A low-cost, compact demonstration cluster</article-title>
          ,
          <source>Cluster Computing</source>
          <volume>17</volume>
          (
          <year>2014</year>
          ), pp.
          <fpage>349</fpage>
          -
          <lpage>358</lpage>
          . doi:
          <volume>10</volume>
          .1007/s10586- 013-0282-7.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.J.</given-names>
            <surname>Evans</surname>
          </string-name>
          ,
          <article-title>Build a Raspberry Pi Cluster Computer, The MagPi magazine newsletter</article-title>
          ,
          <year>2020</year>
          . URL: https://magpi.raspberrypi.org/articles/build
          <article-title>-a-raspberry-pi-cluster-computer.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Dinan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Olivier</surname>
          </string-name>
          , G. Sabin,
          <string-name>
            <given-names>J.</given-names>
            <surname>Prins</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Sadayappan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tseng</surname>
          </string-name>
          ,
          <article-title>Dynamic Load Balancing of Unbalanced Computations Using Message Passing</article-title>
          , in
          <source>: Proceedings of the 21st IEEE International Parallel and Distributed Processing Symposium</source>
          ,
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          , Long Beach, CA,
          <year>2007</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          . doi:
          <volume>10</volume>
          .1109/IPDPS.
          <year>2007</year>
          .
          <volume>370581</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kumar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.H.</given-names>
            <surname>Rana</surname>
          </string-name>
          ,
          <string-name>
            <surname>Various Dynamic</surname>
          </string-name>
          Load-Balancing Algorithms in Cloud Environment: A Survey,
          <source>International J. of Computer Applications</source>
          <volume>6</volume>
          (
          <issue>129</issue>
          ),
          <year>2015</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>19</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <article-title>[7] Load Balancing in a Cluster: Oracle ® Fusion Middleware Administering Clusters for Oracle WebLogic Server</article-title>
          ,
          <year>2015</year>
          . URL: https://docs.oracle.com/middleware/1212/wls/CLUST/load_balancing.
          <source>htm#CLUST171.</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>X.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <article-title>Parallel Programming in Python: mpi4py (part 1):</article-title>
          PDC Blog,
          <year>2019</year>
          . URL: https://www.kth.se/blogs/pdc/2019/08/parallel
          <article-title>-programming-in-python-mpi4py-part-1/.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Aldasht</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ortega</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.G.</given-names>
            <surname>Puntonet</surname>
          </string-name>
          ,
          <article-title>Dynamic Load Balancing in Heterogeneous Clusters</article-title>
          . PICCIT,
          <year>2007</year>
          . URL: https://www.researchgate.net/publication/237067125_Dynamic_Load_Balancing_in_Heterogene ous_Clusters.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>V.</given-names>
            <surname>Grujoski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Talevski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Zubov</surname>
          </string-name>
          ,
          <article-title>Microsoft Private Cloud Virtual Machine Logical Processors Settings' Relative Weight Calculation Using Fuzzy Logic</article-title>
          .
          <source>In: Proceedings of Conf. “Computer Intelligent Systems and Networks”</source>
          , Kryvyi Rih National University, Ukraine,
          <year>2014</year>
          , pp.
          <fpage>106</fpage>
          -
          <lpage>111</lpage>
          . doi:
          <volume>10</volume>
          .13140/RG.2.1.1538.8002.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>