Skip to content

Parallelism and Servers ​

In Stochastic Petri Nets, every timed transition has a server concurrency policy that determines whether it serves one item at a time or multiple items concurrently. This is one of the most critical modeling choices: getting it wrong produces plausible-looking numbers that are mathematically invalid.


Single Server vs. Infinite Server ​

In Jupiter, selecting any timed transition allows you to choose its server policy:

PolicyLetter in editorMeaningBehavior
Single ServerSServes only 1 item at a timeEven if 10 tokens arrive, the transition processes them strictly one by one sequentially.
Infinite ServerIServes as many items as arriveImposes no internal bottleneck: if $N$ tokens arrive, all $N$ advance in parallel.

On the canvas, every timed transition displays the letter S or I inside its rectangle, making the concurrency policy visible across the whole model.

"Infinite Server" does not mean unlimited capacity

"Infinite Server" merely means that the transition does not artificially restrict concurrency itself. Real capacity limits are enforced by capacity places. An Infinite Server transition fed by a place with 3 worker tokens will process at most 3 items in parallel.


Impact on Performance: The Single Server Trap ​

Consider an M/M/1 queue with 5-minute service time and arrivals every 10 minutes. Observe what happens when extra workers are added with and without infinite server concurrency:

WorkersConcurrency enabled?Average queueTotal in systemMean response time
1—0.501.0010.0 min
2No (Single Server)0.251.0010.0 min
2Yes (Infinite Server)0.030.535.3 min
4No (Single Server)0.061.0010.0 min
4Yes (Infinite Server)0.000.505.0 min

What the numbers reveal ​

Look closely at the 2 and 4 worker rows under Single Server:

  • The waiting queue appears smaller (drops from 0.50 to 0.25).
  • However, the total number of items in the system stays locked at 1.00.
  • The customer response time stays completely unchanged at 10.0 min.

The Trap

Adding staff or servers without enabling parallel execution (Infinite Server) does not improve response time: it merely shifts where tokens wait. Items leave the queue and enter service; but because the transition only processes one at a time, the extra tokens end up queueing inside the service stage itself.

With the transition set to Infinite Server, both workers process requests simultaneously: total items in the system drop to 0.53 and response time is cut in half (5.3 min).


Decision Guide ​

When to use Single Server (S) ​

Use when the physical resource is strictly sequential and mutually exclusive:

  • A single human cashier.
  • A shared physical printer.
  • A single mechanical arm or hard drive write head.
  • A half-duplex communication channel.

When to use Infinite Server (I) ​

Use when the stage represents a shared pool or concurrent processing units:

  • A team of $N$ attendants (governed by an initial marking of $N$ in a worker place).
  • A multi-core CPU or server cluster with $N$ worker threads.
  • A delay line or network pipe where multiple packets travel in flight at once.

Golden Rule

If you created a capacity place representing $N$ shared resources (where tokens are acquired upon entry and released on exit), the timed service transition must almost always be configured as Infinite Server. Otherwise, those $N$ resources will never operate concurrently.


The "Capacity Without Effect" Warning ​

Jupiter includes a pre-flight model analyzer that flags this common modeling flaw:

If the engine detects a timed transition set to Single Server drawing tokens from a place that has an initial marking greater than 1 (or can hold multiple tokens simultaneously), it issues a warning:

Capacity without effect: The transition serves one item at a time, but the input resource provides capacity greater than 1.

Whenever this warning appears in your results, change the transition policy to Infinite Server.

Next steps ​

Learn how to manage constants and model variables in 3 · Parameters.