README.md

Introduction

Wisdom-advisor is a tunning framework aimming at improving the performance of applications using scheduling or other methods. Two policy is supported now in wisdom-advisor:

  1. Thread affinity: schedule threads according to their affinity(the affinity can be specified by users or automatic detection).
  2. Thread grouping: scheduling threads according to what they are doing.

There are several functions optinal that assist scheduling decision like NUMA affinity detection which can reduce access cross-NUMA memory, net affinity detection which can detect net accessing processes and get the perferred NUMA node according to the net device they use and more.

Wisdom-advisor now support arm64 architectrue, support for x86 is on the way. Wisdom-advisor should run with root privileges.

Build

Please note that go environment is needed and one accessible goproxy server is necessary for Go Modules is used here to manage vendoring packages.

To set available proxy, please refer to Go Module Proxy

mkdir -p $GOPATH/src/gitee.com
cd $GOPATH/src/gitee.com
git clone <wisdom-advisor project>
cd wisdom-advisor
export GO111MODULE=on
go mod vendor
make

wisdomd binary file is in $GOPATH/pkg/

Run testcases

make check

Install

In wisdom-advisor project directory.

make install

How to use

Get help infomation

wisdomd -h

When using thread affinity policy without automatic detection. Wisdomd will get group information from /proc/pid/envrion and auto set affinity for threads in group. Group environment variable format is as below: __SCHED_GROUP_<group_name>=thread_name1,thread_name2...

wisdomd --policy threadsaffinity 

Or we can use automatic detection.

wisdomd --policy threadsaffinity --affinityAware

When using thread grouping, CPU partition description json script should be provided.

wisdomd --policy threadsgrouping --json XXX.json

Wisdomd will do some scanning when using threadsaffinity policy with automatic detection and threadsgrouping policy and this scanning opertation can be shutdown or restart.

wisdom --scan start
wisdom --scan stop

Other options can be found in help information.

Note: For security consideration, the json script that describe CPU partition should be set with appropriate umask. Normal users should not have the wirte or access permissions. When not necessary, scan should be stop.

Licensing

Wisdom is licensed under the Mulan PSL v2.

项目简介

Wisdom-advisor is a tunning framework aimming at improving the performance of applications.

发行版本

当前项目没有发行版本

贡献者 3

M MarsChan @MarsChan
M MarsChan @MarsChan
O openeuler-ci-bot @openeuler-ci-bot

开发语言

  • Go 94.0 %
  • C 2.9 %
  • Shell 1.9 %
  • Makefile 1.3 %