How many licenses do I need?

Software is not sold, it is licensed. A license grants the end-user a “right to use” the software on a given server. A license is needed for every server where the software is installed and for every user that can access it.

What types of licenses exist?

Two types of license exist; a "User" and a "Core" license.

User Licenses. A "User" license creates a finite pool of available connections between every user’s workstation and the server. The size of this pool is defined by the number of connections purchased, which is encoded in the key and verified by the License Manager. Each open or active window within the application consumes one of these connections, so decreasing the "available count" in the pool by one. Only active (read simultaneous) users consume connections.

Depending on how the application is written, a user may consume multiple connections if multiple active windows are open. Each active window requires a connection. For the most part, the number of "users" equals the number of "connections", but it is recommended to budget for a greater number, if multiple windows are commonplace throughout the application.

When the pool of connections is exhausted, a message will appear blocking access to new connections (users). If this occurs frequently, it is recommended to purchase more connections/users and add them to the license.

CPU/Core Licenses. The term “CPU” is often used interchangeably with the term “Core”. For the purposes of Licensing Genero, it is important to distinguish the two.

Définitions.

A CPU, also known as a “Socket”, is the physical chip that is seated on the computer printed circuit board. "Cores" are a kind of sub-CPU embedded in the CPU’s circuitry and they come in multiples of two. Cores provide a means of rapid on-chip multiprocessing, reducing the need for inter-process communications across relatively slow system buses.

Depending on the microprocessor vendor, Cores may also comprise multiple threads, which are computational processing queues permitting further parallelism within the Core.

In summary, CPUs comprise Cores, which in turn may comprise Threads.

Genero Cores

For Genero's License Manager, the unit of measure is the Core. A Genero Core license comprises an infinite pool of available connections. The number of Genero Cores licensed for a given server must match the number of physical Cores available to Genero. The way this control is achieved is by encoding the number of licenses purchased into the key and then comparing it to the number of physical cores detected by the License Manager.

Downgrades

If there is a mismatch, the License Manager will automatically downgrade the license. It does this by reducing the size of the infinite pool to a finite number of connections calculated by the number of Cores licensed for the server multiplied by 25. If for example, a server has 32 Cores and the license is only for 16, then the available pool will be 16 x 25 = 400 connections.

A simple command line utility returns the number of Cores or Threads detected by Genero.

Core licenses in the virtual world

It is possible to run Genero within operating system virtual machines. The behavior and properties of these virtual machines vary from vendor to vendor, making it sometimes difficult for the License Manager to measure correctly.

In this case, common sense rules and the commercial intent that governs how many Cores are to be purchased is very simple - it is the number of Cores available to Genero.

In some cases, the operating system may return a value to the License Manage that does not necessarily reflect the available Cores. Sometimes an operating system can return the number of Threads - a figure much higher than Cores. Sometimes the number can be lower than the available power because the available Cores is expressed as a "minima" in a dynamic Core allocation environment.

In these exceptional cases, a mutual judgement will be made between Four Js and its customers as to how many Cores should be purchased and how many should be encoded into the key. It may be that the two numbers differ. The aim is to satisfy the real intent.

Do web services consume sessions?

Yes. A web service consumes connections in the same way that users do, with one notable difference. On reaching the available limit in the pool, web services are queued rather than blocked as with users. The greater the number of connections in the pool, the greater the web service throughput. Budgeting web services can be something of a black art and it is recommended to opt for CPU pricing.