Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Intel Cache Allocation Technology #227

Open
PhilippWendler opened this Issue Feb 19, 2017 · 7 comments

Comments

Projects
None yet
4 participants
@PhilippWendler
Copy link
Member

PhilippWendler commented Feb 19, 2017

Some Intel Xeons support the Cache Allocation Technology (CAT), which allows controlling which CPU cores may use which parts of the (L3) cache. It should be possible to use this for avoiding the influence of cache performance for parallel benchmarks on the same CPU.

We should investigate whether this is indeed helpful and whether support can be added to BenchExec. There is a tool from Intel (documentation) that we can use for investigation.

Support for this was also added to Linux 4.10 (documentation, article, slides). If we add support for CAT to BenchExec, we should probably use this kernel feature instead of directly accessing the CPU via its MSRs.

@PhilippWendler

This comment has been minimized.

Copy link
Member Author

PhilippWendler commented Feb 26, 2017

More information and references for CAT are in this blog post.

@PhilippWendler

This comment has been minimized.

Copy link
Member Author

PhilippWendler commented Jun 29, 2017

Since Linux 4.12, this feature also supports allocating memory bandwidth, which we should also use.

@Pac23

This comment has been minimized.

Copy link

Pac23 commented Mar 3, 2019

@PhilippWendler interested in this for gsoc 2019 the prerequisite states it says "maybe C" would be required,i am super comfortable with python(one of the requirements),worked with C but not with hardware level C.So basically my questions is what is the level of C that would be involved.

@PhilippWendler

This comment has been minimized.

Copy link
Member Author

PhilippWendler commented Mar 4, 2019

Probably not too difficult. The goal is actually to have all in Python, and only if necessary use C. Soo far we managed to never need C, but I cannot guarantee it for this project idea.

@miscellaneously

This comment has been minimized.

Copy link

miscellaneously commented Mar 15, 2019

Hi @PhilippWendler ,
I just went through the articles and references you mentioned above , I found them intresting, I want to contribute to this project, can you please point out where exactly in benchexec, this feature is going to be integrated or i have to find that by myself as you have mentioned that

We should investigate whether this is indeed helpful and whether support can be added to BenchExec.

Also what should I do to increase my proposal acceptance chance, any tasks or report I should create,for now I am setting up this program on machine get bit hang of it.Please point out some code/task so that I can appreciate the complexity of this task and prepare suitable and acheivable timeline for it.

Finally thanks for reading, waiting for your reply.

@kfriedberger

This comment has been minimized.

Copy link
Member

kfriedberger commented Mar 15, 2019

Hi @miscellaneously,
Philipp is on holiday a few days, but I will try to answer your questions as far as possible.

As most of the code for managing limitations, core assignments and measurements is part of the class runexecutor.py, this might be a good point where new code for this feature should be added in the end.

A first step would be to update the information given in the beginning of this issue, because the statement is already two years old and none of our team has tracked the latest development for this feature aside of BenchExec. The whole feature might already be available in a current Linux kernel, maybe with some nice API, just like CGroups. You will need to collect some information and updates on this topic.

@miscellaneously

This comment has been minimized.

Copy link

miscellaneously commented Mar 15, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.