Skip to content

AppQoS Client

Marcel Cornu edited this page Sep 13, 2023 · 2 revisions

Overview

App QoS client is a web application that provides a Graphical User Interface (GUI) to configure Intel® Resource Director Technology (RDT) and Intel® Speed Select Technology (SST). The application acts as a frontend to App QoS, therefore requires a running back-end instance of App QoS to make platform configuration changes via its REST API.

What is App QoS?

App QoS is an application that allows grouping apps/VMs/containers into priority based “resource pools”. Each pool is allocated some amount of shared processor resources, such as cache and memory bandwidth based on the pool’s priority. Pool cores can also be configured to run at higher or lower frequencies to meet power or performance requirements. Apps can be statically assigned to pools based on their priority or can be dynamically moved between pools as needed.

Client Application Target Audience

While App QoS assumes some prior knowledge of platform technologies such as Intel® RDT and Intel® SST, the client application aims to help new users discover and learn about these technologies. The client app provides information about a range of features, along with simple controls to manage those features on either local or remote systems. Users can quickly discover what features are available on their platform, and experiment with those to find an optimal platform configuration for their use case.
Note: The App QoS client app is intended for evaluating Intel® platform technologies and should not be deployed in production environments.

App QoS Client Feature support

App QoS and the client application currently support the following hardware features:

Intel® Resource Director Technology (RDT)

  • L3 Cache Allocation Technology (L3 CAT)
  • L3 Code and Data Prioritization (L3 CDP)
  • L2 Cache Allocation Technology (L2 CAT)
  • L2 Code and Data Prioritization (L2 CDP)
  • Memory Bandwidth Technology (MBA)

Intel® Speed Select Technology (SST)

  • Base Frequency (SST-BF)
  • Core Power (SST-CP)

Setup

Using the client application requires a running instance of App QoS on a Linux system with support for at least one of the features mentioned above. The simplest way to get setup is to clone 2 copies of the intel-cmt-cat repo. One copy will be on the Linux server running App QoS (back-end) and the other on a laptop/desktop running the client (front-end) web application. The steps below outline how to setup the App QoS back-end to allow the client app to connect, and how to run the client web application in a local development server.

App QoS Setup (back-end)

Since most modern web browsers block cross-origin requests by default (see CORS for more information), the development build of App QoS must be used. This includes CORS support, which is required for the client to make API calls to App QoS. This can be done with the following steps:

  1. Build and install the library and tools:
cd ./intel-cmt-cat
make && sudo make install
  1. Setup App QoS development environment:
cd ./appqos
make setup-dev
  1. Generate temporary mTLS certificates for testing purposes:
./ca/gen_test_certs.sh
  1. Run App QoS with CORS enabled:
sudo make run APPQOS_RUN_OPTS=”--cors”

More detailed App QoS installation instructions can be found here.

App QoS client setup (front-end)

Detailed App QoS client setup instructions can be found here. These can be summarized in the following steps:

  1. Generate client PKCS 12 certificate:
cd ./intel-cmt-cat
./appqos/ca/gen_test_certs_additional.sh
  1. Import generated client_appqos.p12 certificate into browser certificate store as described here.

  2. Install client dependencies:

cd ./appqos_client
npm install
  1. Start the client app using local development server:
npm start

The client app should now be accessible by navigating to http://localhost:4200 in a web browser.
Note: The Chrome browser is recommended to run the client app, although most Chromium based browsers should work fine. Firefox has some known issues so is currently not supported.

Connecting from the client to App QoS

Since App QoS makes hardware changes, it requires root privileges. For security reasons, it is recommended to run App QoS accessible only from localhost and not to allow direct remote connections over the network. SSH tunnelling can be used to proxy requests from the client application to App QoS. This can be done with the following steps:

  1. Establish a local SSH tunnel from localhost port 5000 to remote system port 5000 with:
$ ssh -L 5000:localhost:5000 [email protected]

Alternatively, tools like MobaXterm provide graphical tools to create the SSH tunnel. This can be done by opening Tools->MobaSSHTunnel (port forwarding) with the following configuration:

  1. Login to the App QoS client application with localhost URL:

On initial login, a browser popup should appear and prompt you to select the certificate to use for authentication. By default, this is named "localhost".

FAQ

I see “Please enter a valid credentials or server isn't responding...” when trying to login.

This can happen for several reasons. To see details on the cause of the error, open the browser developer tools by clicking the menu in the top right of Chrome, navigating to More Tools->Developer Tools (or use keyboard shortcut “CTRL+SHIFT+I”) and opening the Console tab.

Below are some of the common issues and how to resolve them.

Incorrect certificate selected
On initial login, a browser popup should appear and prompt you to select the certificate to use for authentication. This error can occur if the incorrect certificate was selected.

From time to time, the browser popup does not appear when logging in. This is a known issue and is currently being investigated. A known workaround is to open a new browser tab and navigate to https://localhost:5000/caps/cpu to make a request and force the certificate selection popup. If successful, restart the App QoS backend and login again from the client application.

SSL certificates not correctly generated and/or imported
If SSL certificates were not correctly created and imported into the browser, this error can occur. If you are unsure that you did this correctly, try regenerating certificates and importing them into the browser again.


I see CORS errors in the console

This occurs if App QoS is not running with CORS support enabled. Please ensure you are using the App QoS development build and running with the --cors option:

make setup-dev
sudo make run APPQOS_RUN_OPTS=”--cors”

What browser should I use?
The Chrome browser is recommended to run the client app, although most Chromium based browsers should work. Firefox has some known issues so is currently not supported.


I see a lot of errors in App QoS logs
These error log messages occur because App QoS and the client app are using self-signed SSL certificates for testing purpose.