Skip to content

Commit e0b7418

Browse files
sashwin04RahulJaikumar
andauthored
25.14_ext Release (#98)
Co-authored-by: RahulJaikumar <kelly.deng@intel.com>
1 parent f1d39bc commit e0b7418

File tree

742 files changed

+103943
-2757
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

742 files changed

+103943
-2757
lines changed

CMakeLists.txt

Lines changed: 44 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,56 +33,62 @@ else()
3333
endif()
3434
set(PLATFORM "${platform}")
3535
endif()
36+
include(official-release OPTIONAL)
37+
execute_process(COMMAND bash -c "GIT_SSH_COMMAND='ssh -o BatchMode=yes' GIT_ASKPASS=echo git fetch --tags > /dev/null;GIT_ASKPASS=echo git tag | sort -V" TIMEOUT 10 OUTPUT_VARIABLE official_releases RESULT_VARIABLE status OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
38+
if(NOT (status EQUAL 0))
39+
set(official_releases "")
40+
endif()
3641

37-
include(registry OPTIONAL)
38-
execute_process(COMMAND bash -c "GIT_SSH_COMMAND='ssh -o BatchMode=yes' GIT_ASKPASS=echo git fetch --tags > /dev/null;GIT_ASKPASS=echo git tag | sort -V" TIMEOUT 10 OUTPUT_VARIABLE tmp RESULT_VARIABLE status OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
39-
if (RELEASE MATCHES "^:?v?[0-9]+[.][0-9]+[.]*[0-9]*$")
42+
if (RELEASE MATCHES "^:?v?[0-9][0-9]*[.][0-9][0-9]*")
4043
string(REPLACE ":" "" release1 "${RELEASE}")
41-
if ((status EQUAL 0) AND (tmp MATCHES "${release1}"))
44+
string(REPLACE "." "[.]" release1 "${release1}")
45+
if (official_releases MATCHES "${release1}")
4246
if((NOT DEFINED REGISTRY) OR (NOT REGISTRY))
4347
set(REGISTRY "${DEFAULT_REGISTRY}")
4448
endif()
4549
endif()
4650
endif()
4751

48-
string(REGEX REPLACE ".*\n" "" tmp "${tmp}")
49-
string(REGEX REPLACE "(v?[0-9]*[.][0-9]*)[.].*" "\\1" mtmp "${tmp}")
50-
if (tmp AND (status EQUAL 0))
51-
if ((NOT RELEASE STREQUAL ":${tmp}") AND (NOT RELEASE STREQUAL "${tmp}"))
52+
if(NOT (EXISTS "${PROJECT_SOURCE_DIR}/.hybrid_release"))
53+
string(REGEX REPLACE ".*\n" "" tmp "${official_releases}")
54+
string(REGEX REPLACE "(v?[0-9]*[.][0-9]*)[.].*" "\\1" mtmp "${tmp}")
55+
if (tmp)
56+
if ((NOT RELEASE STREQUAL ":${tmp}") AND (NOT RELEASE STREQUAL "${tmp}"))
57+
message("")
58+
message("*************************************************************")
59+
message("")
60+
if (tmp STREQUAL mtmp)
61+
message("${green}INFO:${reset} Detected major release ${mtmp}.")
62+
else()
63+
message("${green}INFO:${reset} Detected major release ${mtmp} and minor releases up to ${tmp}.")
64+
message("${green}INFO:${reset} Minor releases do not cover all workloads. See workload README.")
65+
endif()
66+
message("${green}INFO:${reset} Switch to the latest release as follows:")
67+
string(REPLACE "v" "" btmp "${tmp}")
68+
execute_process(COMMAND bash -c "GIT_SSH_COMMAND='ssh -o BatchMode=yes' GIT_ASKPASS=echo git branch --no-color -a --contains tags/${tmp} | grep -E 'remotes/.*/${btmp}$' | tail -n1 | tr -d ' '" TIMEOUT 5 OUTPUT_VARIABLE branch_id OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
69+
if(branch_id MATCHES "remotes")
70+
string(REPLACE "remotes/" "" branch_id "${branch_id}")
71+
else()
72+
set(branch_id "tags/${tmp}")
73+
endif()
74+
message("${green}INFO:${reset} git checkout tags/${tmp} # ${branch_id} with hotfix" )
75+
message("${green}INFO:${reset} cmake -DRELEASE=${tmp} ..")
76+
message("")
77+
message("*************************************************************")
78+
message("")
79+
endif()
80+
else()
5281
message("")
53-
message("*************************************************************")
82+
message("****************************************************************************")
5483
message("")
55-
if (tmp STREQUAL mtmp)
56-
message("${green}INFO:${reset} Detected major release ${mtmp}.")
57-
else()
58-
message("${green}INFO:${reset} Detected major release ${mtmp} and minor releases up to ${tmp}.")
59-
message("${green}INFO:${reset} Minor releases do not cover all workloads. See workload README.")
60-
endif()
61-
message("${green}INFO:${reset} Switch to the latest release as follows:")
62-
string(REPLACE "v" "" btmp "${tmp}")
63-
execute_process(COMMAND bash -c "GIT_SSH_COMMAND='ssh -o BatchMode=yes' GIT_ASKPASS=echo git branch --no-color -a --contains tags/${tmp} | grep -E 'remotes/.*/${btmp}$' | tail -n1 | tr -d ' '" TIMEOUT 5 OUTPUT_VARIABLE branch_id OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
64-
if(branch_id MATCHES "remotes")
65-
string(REPLACE "remotes/" "" branch_id "${branch_id}")
66-
else()
67-
set(branch_id "tags/${tmp}")
68-
endif()
69-
message("${green}INFO:${reset} git checkout tags/${tmp} # ${branch_id} with hotfix" )
70-
message("${green}INFO:${reset} cmake -DRELEASE=${tmp} ..")
84+
message("${red}WARNING:${reset} Failed to detect any official release.")
85+
message(" Switch to any release as follows:")
7186
message("")
72-
message("*************************************************************")
87+
message("git checkout <VERSION>")
88+
message("cmake -DREGISTRY=${DEFAULT_REGISTRY} -DRELEASE=v<VERSION> ..")
7389
message("")
90+
message("****************************************************************************")
7491
endif()
75-
else()
76-
message("")
77-
message("****************************************************************************")
78-
message("")
79-
message("${red}WARNING:${reset} Failed to detect any official release.")
80-
message(" Switch to any release as follows:")
81-
message("")
82-
message("git checkout <VERSION>")
83-
message("cmake -DREGISTRY=${DEFAULT_REGISTRY} -DRELEASE=v<VERSION> ..")
84-
message("")
85-
message("****************************************************************************")
8692
endif()
8793

8894
if (NOT ${REGISTRY} MATCHES "/$")
@@ -172,7 +178,7 @@ if(COMMAND detect_backend_warnings)
172178
detect_backend_warnings()
173179
endif()
174180

175-
if (RELEASE MATCHES "^:v[0-9]+[.][0-9]+[.]*[0-9]*$")
181+
if ((RELEASE MATCHES "^:v[0-9]+[.][0-9]+[.]*[0-9]*$") AND (NOT (EXISTS "${PROJECT_SOURCE_DIR}/.hybrid_release")))
176182
string(REPLACE ":" "" release1 "${RELEASE}")
177183
if((NOT REGISTRY STREQUAL "${DEFAULT_REGISTRY}") AND (NOT REGISTRY STREQUAL "${DEFAULT_REGISTRY}/") AND DEFAULT_REGISTRY)
178184
message("${red}WARNING:${reset} Issue 'cmake -DREGISTRY=${DEFAULT_REGISTRY} ..' to use official ${release1} images")

CONTRIBUTING.md

Lines changed: 19 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,29 @@
1-
# Contributing
1+
## Welcome to the Service Framework Workload Repository Contributing Guide
22

3-
### License
3+
### Evaluate Workloads
44

5-
<PROJECT NAME> is licensed under the terms in [LICENSE]<link to license file in repo>. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.
5+
Follow the [README](README.md#prerequisite) instructions to setup [local](doc/user-guide/preparing-infrastructure/setup-docker.md), [remote](doc/user-guide/preparing-infrastructure/setup-cumulus.md), or [Cloud](doc/user-guide/preparing-infrastructure/setup-cumulus.md) systems to evaluate any [supported workloads](worklod/README.md#list-of-workloads).
66

7-
### Sign your work
7+
You can choose to build the workloads and evaluate the workload execution with `ctest`, which manage the workload test cases. You can run any subset of the test cases or all of them.
88

9-
Please use the sign-off line at the end of the patch. Your signature certifies that you wrote the patch or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify
10-
the below (from [developercertificate.org](http://developercertificate.org/)):
9+
### Submit Issues
1110

12-
```
13-
Developer Certificate of Origin
14-
Version 1.1
11+
If you spot a problem with the repository, submit an issue at the **github issues**.
1512

16-
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
17-
660 York Street, Suite 102,
18-
San Francisco, CA 94110 USA
13+
### Contribute to Workload Development
1914

20-
Everyone is permitted to copy and distribute verbatim copies of this
21-
license document, but changing it is not allowed.
15+
Here is a list of references you can follow for workload development:
16+
- A workload consists of a few critical pieces of scripts or manifests, documented in [Workload Elements](doc/developer-guide/component-design/workload.md):
17+
- [`CMakeLists.txt`](doc/developer-guide/component-design/cmakelists.md)
18+
- [`build.sh`](doc/developer-guide/component-design/build.md)
19+
- [`Dockerfiles`](doc/developer-guide/component-design/dockerfile.md)
20+
- [`cluster-config.yaml.m4`](doc/developer-guide/component-design/cluster-config.md)
21+
- [`kubernetes-config.yaml.m4`](doc/developer-guide/component-design/kubernetes-config.md)
22+
- [`validate.sh`](doc/developer-guide/component-design/validate.md)
23+
- [`kpi.sh`](doc/developer-guide/component-design/kpi.md)
24+
- The best way to start a new workload development is by copying the [dummy](workload/dummy) workload and then modifying it to your needs.
2225

23-
Developer's Certificate of Origin 1.1
26+
### Submit Contributions
2427

25-
By making a contribution to this project, I certify that:
28+
Thanks for your contribution to the Service Framework workload repository. Whether you plan to modify an existing workload or to create a new workload, please fork the SF workload repository to your own private work place. Make modifications there. Then submit a merge request. The branches of the main repository are reserved for release-related activities.
2629

27-
(a) The contribution was created in whole or in part by me and I
28-
have the right to submit it under the open source license
29-
indicated in the file; or
30-
31-
(b) The contribution is based upon previous work that, to the best
32-
of my knowledge, is covered under an appropriate open source
33-
license and I have the right under that license to submit that
34-
work with modifications, whether created in whole or in part
35-
by me, under the same open source license (unless I am
36-
permitted to submit under a different license), as indicated
37-
in the file; or
38-
39-
(c) The contribution was provided directly to me by some other
40-
person who certified (a), (b) or (c) and I have not modified
41-
it.
42-
43-
(d) I understand and agree that this project and the contribution
44-
are public and that a record of the contribution (including all
45-
personal information I submit with it, including my sign-off) is
46-
maintained indefinitely and may be redistributed consistent with
47-
this project or the open source license(s) involved.
48-
```
49-
50-
Then you just add a line to every git commit message:
51-
52-
Signed-off-by: Joe Smith <joe.smith@email.com>
53-
54-
Use your real name (sorry, no pseudonyms or anonymous contributions.)
55-
56-
If you set your `user.name` and `user.email` git configs, you can sign your
57-
commit automatically with `git commit -s`.

README.md

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44
55
### Introduction
66

7-
Welcome to the **Workload Services Framework** repository. The repository contains a set of workloads optimized for Intel(R) Xeon(R) platforms. You can find the list of supported workloads in the [workload](workload) directory.
7+
This is the **Workload Services Framework** repository. The repository contains a set of workloads optimized for Intel(R) Xeon(R) platforms. See the list of supported workloads under the [workload](workload) directory.
88

99
### Prerequisite
1010

11-
Before you begin, ensure the following:
12-
13-
- Sync your system date and time. This is required for any credential authorization.
11+
- Sync your system date/time. This is required by any credential authorization.
1412
- If you are behind a corporate firewall, please setup `http_proxy`, `https_proxy` and `no_proxy` in `/etc/environment`, and source the settings into the current shell environment.
15-
- Run the [`setup-dev.sh`](doc/user-guide/preparing-infrastructure/setup-wsf.md#setup-devsh) script to setup the development host for workload development and evaluation. Refer to [Cloud and On-Premises Setup](doc/user-guide/preparing-infrastructure/setup-wsf.md) for additional SUT setup. SUT stands for `System Under Test`, or `workload test machines`.
13+
- Run the [`setup-dev.sh`](doc/user-guide/preparing-infrastructure/setup-wsf.md#setup-devsh) script to setup the development host for workload development and evaluation. See [Cloud and On-Premises Setup](doc/user-guide/preparing-infrastructure/setup-wsf.md) for additional SUT setup. SUT stands for System Under Test, or workload test machines.
1614

1715
### Evaluate Workload
1816

@@ -36,9 +34,6 @@ The WSF supports multiple validation backends. By default, the [terraform](doc/u
3634

3735
### Build Workload
3836

39-
To build a workload, use the following commands:
40-
41-
4237
```
4338
mkdir -p build
4439
cd build
@@ -50,16 +45,14 @@ make
5045

5146
> TIP: You can specify `BENCHMARK` to limit the repository scope to the specified workload. The build and test operations on all other workloads are disabled. See [Build Options](doc/user-guide/executing-workload/cmake.md) for details.
5247
53-
Alternatively, you can use:
54-
5548
```
5649
cd build
5750
cmake -DBENCHMARK=ResNet-50
5851
make
5952
./ctest.sh -N
6053
```
6154

62-
### Additional Resources
55+
### See Also
6356

6457
- [Build Options](doc/user-guide/executing-workload/cmake.md)
6558
- [Test Options](doc/user-guide/executing-workload/ctest.md)

Security.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Security Policy
2+
Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation.
3+
4+
## Reporting a Vulnerability
5+
Please report any security vulnerabilities in this project [utilizing the guidelines here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html).
6+

doc/developer-guide/component-design/docker-config.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@ worker-0:
2323
where
2424
- The top level keys are the SUT hostnames. The number of the SUT hosts must match what is specified in `cluster-config.yaml`. The SUT hosts are named against their SUT workgroup. For example, for the workers, the SUT hosts are named as `worker-0`, `worker-1`, etc. For clients, the SUT hosts are named as `client-0`, `client-1`, etc.
2525
- The value of each SUT host is a list of containers to be scheduled on the SUT host. The list order is not enforced.
26-
- Each container is described as a dictionary of `image` (the full docker image name), `options` (the docker run command line arguments, as a string or a list), `command` (optional, will overwrite commands inside container if defined) and `export-logs` (whether logs should be collected on the container).
26+
- Each container is described as a dictionary of
27+
- `image`: Specify the full docker image name
28+
- `options`: Specify the docker run command line arguments, as a string or a list.
29+
- `command`: Optional. Specify any startup command. This will overwrite whatever is defined in the docker image.
30+
- `export-logs` or `service-logs`: Optional. Specify whether logs should be collected on the container.
31+
32+
> The script will first collect logs on containers whose `export-logs` is true, which also signals that the workload execution is completed. Then collect logs on containers whose `service-logs` is `true`. `export-logs` and `service-logs` are exclusive options and can not both be true.
2733
2834
# Test Time Considerations
2935

doc/developer-guide/component-design/kubernetes-config.md

Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -43,49 +43,9 @@ spec:
4343

4444
### About `imagePullPolicy`
4545

46-
To ensure that the validation runs always on the latest code, it is recommended to use `imagePullPolicy: Always`. However, this requires to use a private docker registry. In a local development, `imagePullPolicy: IfNotPresent` is desired.
46+
To ensure that the validation runs always on the latest code, it is recommended to use `imagePullPolicy: Always`.
4747

48-
If you use the `.m4`, `.j2`, or helm template, the variable `IMAGEPULLPOLICY` is defined to be either `IfNotPresent` or `Always`.
49-
50-
```m4
51-
...
52-
spec:
53-
containers:
54-
- name: database
55-
image: IMAGENAME(wordpress5mt-defn(`DATABASE'))
56-
imagePullPolicy: IMAGEPULLPOLICY
57-
...
58-
```
59-
60-
If you use the `.j2` template, use the following conditions:
61-
62-
```jinja
63-
...
64-
spec:
65-
...
66-
spec:
67-
containers:
68-
- name: database
69-
image: "{{ REGISTRY }}wordpress5mt-{{ DATABASE }}{{ IMAGESUFFIX }}{{ RELEASE }}"
70-
imagePullPolicy: "{{ IMAGEPULLPOLICY }}"
71-
...
72-
```
73-
74-
If you use helm charts, use the following conditions:
75-
76-
```jinja
77-
...
78-
spec:
79-
...
80-
spec:
81-
containers:
82-
- name: database
83-
image: "{{ REGISTRY }}wordpress5mt-{{ DATABASE }}{{ IMAGESUFFIX }}{{ RELEASE }}"
84-
imagePullPolicy: "{{ IMAGEPULLPOLICY }}"
85-
...
86-
```
87-
88-
Not all docker images are built equally. Some are less frequently updated and less sensitive to performance. Thus it is preferrable to use `imagePullPolicy: IfNotPresent` in all cases.
48+
Not all docker images are built equally. Some are less frequently updated and less sensitive to performance. Thus it is preferrable to use `imagePullPolicy: IfNotPresent`.
8949

9050
### About `podAntiAffinity`
9151

doc/user-guide/collecting-results/list-kpi.md

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@ Execute this command in the workload folder to fetch KPIs:
1616
Usage: [options] [logs-directory]
1717
--primary List only the primary KPI.
1818
--all List all KPIs.
19-
--outlier <n> Remove outliers beyond N-stdev.
2019
--params List workload configurations.
2120
--sutinfo List sutinfo information.
22-
--format list|xls-list|xls-ai|xls-inst|xls-table
21+
--format list|xls-list
2322
Specify the output format.
24-
--var[1-9] <value> Specify the spread sheet variables.
25-
--filter _(real|throughput)
26-
Specify a trim filter to shorten spreadsheet name.
2723
--file <filename> Specify the spread sheet filename.
2824
--uri Show the WSF portal URI if present.
2925
--intel_publish Publish to the WSF dashboard.
@@ -32,26 +28,3 @@ Usage: [options] [logs-directory]
3228
--tags <tags> Set the publisher tags.
3329
--recent List KPIs for recent testcases.
3430
```
35-
36-
The `xls-ai` option writes the KPI data in the `kpi-report.xls` spread sheet as follows:
37-
38-
![image-ss-ai][image-ss-ai]
39-
40-
where `--var1=batch_size` `--var2=cores_per_instance` `--var3='*Throughput'` `--var4=Throughput_`.
41-
42-
The `xls-inst` option writes the KPI data in the `kpi-report.xls` spread sheet as follows:
43-
44-
![image-ss-inst][image-ss-inst]
45-
46-
The `xls-table` option writes the KPI data in the `kpi-report.xls` spread sheet as follows:
47-
48-
![image-ss-table][image-ss-table]
49-
50-
where `--var1=scale`, `--var2=sleep_time`. Optionally, you can specify `--var3` and `--var4` variables for multiple tables in the same spreadsheet.
51-
52-
[validate.sh]: ../../developer-guide/component-design/validate.md
53-
[Cloud SUT Reuse]: #cloud-sut-reuse
54-
55-
[image-ss-ai]: ../../image/ss-ai.png
56-
[image-ss-inst]: ../../image/ss-inst.png
57-
[image-ss-table]: ../../image/ss-table.png

doc/user-guide/preparing-infrastructure/setup-wsf.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ where, if Kubernetes is used, the SUT hosts are assumed to form a Kubernetes clu
102102

103103
Use the following setup steps:
104104
- Run the [`setup-dev.sh`][setup-dev.sh-self] script to setup the dev host.
105-
- Completely optional in this setup, run the [`setup-reg.sh`][setup-reg.sh-self] script (on the dev host), if you plan to setup a local docker registry for building workloads and storing the built images.
106-
- Depending on the workload types, you can run either the [`setup-sut-native.sh`][setup-sut-native.sh-self], [`setup-sut-docker.sh`][setup-sut-docker.sh-self] script or the [`setup-sut-k8s.sh`][setup-sut-k8s.sh-self] script to setup the SUT hosts. The native setup can run any baremetal native workloads. The docker setup can run most of the single-node containerized workloads (docker or docker compose). The Kubernetes setup can run all containerized workloads (not tied to any Cloud services) on premises.
105+
- Completely optional in this setup, run the [`setup-reg.sh`][setup-reg.sh-self] script (**on the dev host**), if you plan to setup a local docker registry for building workloads and storing the built images.
106+
- Depending on the workload types, you can run either the [`setup-sut-native.sh`][setup-sut-native.sh-self], [`setup-sut-docker.sh`][setup-sut-docker.sh-self] script or the [`setup-sut-k8s.sh`][setup-sut-k8s.sh-self] script (**on the dev host**) to setup the SUT hosts. The native setup can run any baremetal native workloads. The docker setup can run most of the single-node containerized workloads (docker or docker compose). The Kubernetes setup can run all containerized workloads (not tied to any Cloud services) on premises.
107107

108108
---
109109

0 commit comments

Comments
 (0)