[PATCH v4 00/15] CCS static load balance
Andi Shyti
andi.shyti at linux.intel.com
Tue Mar 25 10:52:58 UTC 2025
Hi Joonas,
thanks a lot for your reply!
On Tue, Mar 25, 2025 at 10:24:42AM +0200, Joonas Lahtinen wrote:
> Quoting Andi Shyti (2025-03-24 15:29:36)
> > Back in v3, this patch series was turned down due to community
> > policies regarding i915 GEM development. Since then, I have
> > received several requests from userspace developers, which I
> > initially declined in order to respect those policies.
> >
> > However, with the latest request from UMD users, I decided to
> > give this series another chance. I believe that when a feature
> > is genuinely needed, our goal should be to support it, not to
> > dismiss user and customer needs blindly.
>
> We had plenty of community bug reports when the move to fixed CCS mode
> was initially implemented with some bugs.
>
> After those bugs were fixed, nobody was reporting impactful performance
> regressions.
>
> Do you have a reference to some GitLab issues or maybe some external
> project issues where regressions around here are discussed?
AFAIK, there's no GitLab issue for this because we're not fixing
a bug here; we're adding a new sysfs interface.
All known issues and reports related to CCS load balancing have
already been addressed.
What we're still missing is a way for compute applications to
tweak CCS load balancing settings. I already shared the link [1],
but if you take a look at that code, you'll find
'execution_environment_drm.cpp' [2], where the new interface is
used.
If you're feeling lazy, I can point out the relevant parts,
otherwise, feel free to skip to the final greetings :-)
In 'void ExecutionEnvironment::configureCcsMode()', the app sets
up the path like this:
const std::string drmPath = "/sys/class/drm";
const std::string expectedFilePrefix = drmPath + "/card";
...
auto gtFiles = Directory::getFiles(gtPath.c_str());
auto expectedGtFilePrefix = gtPath + "/gt";
...
std::string ccsFile = gtFile + "/ccs_mode";
Then it writes the desired CCS mode value:
uint32_t ccsValue = 0;
ssize_t ret = SysCalls::read(fd, &ccsValue, sizeof(uint32_t));
...
do {
ret = SysCalls::write(fd, &ccsMode, sizeof(uint32_t));
} while (ret == -1 && errno == -EBUSY);
Arshad and Usha can definitely help if there are any technical
questions about how the application uses the interface.
Usha, would you please be able to share your use case?
Thanks,
Andi
[1] https://github.com/intel/compute-runtime
[2] https://github.com/intel/compute-runtime/blob/master/shared/source/execution_environment/execution_environment_drm.cpp
More information about the Intel-gfx
mailing list