-
Notifications
You must be signed in to change notification settings - Fork 6
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
ZenStates for linux #6
Comments
Hi, I haven't touched such a system, but in theory it should work, unless it is locked by the motherboard bios. You have 2 modes:
You can also tune the limits in auto mode. You should also get some monitoring software to see if they have changed. I should find time to work on this, it could be much better... |
@irusanov see below. 3600 MHz is set in BIOS btw. The p-states values might not be stock (as I had played with it before) but the manual oc mode doesn't reflect changes applied even though it says successful.
python3 /root/git_repos/ZenStates-Linux/zenstates.py --no-gui -l
python3 /root/git_repos/ZenStates-Linux/zenstates.py --no-gui --oc-enable --oc-vid 5A --oc-frequency 3500
lscpu | grep MHz |
Ignore the P-States, they are not updated and not used. Newer CPUs use hw P-States internally. |
So I changed p0 to reflect the oc frequency that I applied previously but the frequency still hovers at 3600
Appreciate your help so far. |
I can confirm lscpu doesn't show the frequency. Even when in OC mode, the frequency is not really fixed, cores drop to what seems to be lowest active P-State2.
The OC frequency is set though. You can watch for changes every second with You will see the frequency jumps to the required one. You can also run some benchmark like blender to see if it stays at 3500. PS: Currently, you have to supply the It's always possible that it doesn't work for you though, as it seems you do everything correctly :/ |
I have also pushed a WIP branch with all the changes I had laying around, but I doubt it would make a difference: |
Uff, I think the problem is it uses the "Rome ES" code, while this is Castle Peak. That's why it is not working. |
Yes. it's the CPUID issue. the WIP branch works great. |
|
it picked up the changes correctly now with oc frequency. |
Cool, it was an overlook from my side, this should have been the first thing to check. Thanks for your patience :d |
hold on a minute. I jumped the gun in excitement. I was use WIP on 5950X which obviously worked before as well. fixed it and it works now.
|
yes, try |
Yup. already done so and it works :) |
I also force-pushed it. Glad it finally works :) |
Hey, I was also looking into using ZenStates on Linux and bumped into ryzen_smu which can also read and write to the SMU. Right now I'm looking at your code for ZenStates and I have a question about this line in GetPsmMarginSingleCore:
My goal is to set PsmMargin, but I first need to figure out what it is actually set to before I just blindly write wrong values here. I need to write this coremask to /sys/kernel/ryzen_smu_drv/smu_args before sending 0x35. I could just write the assumed value with 0x36 but I like to verify what I'm doing. What values does coreMask take? Like 0x01000000 would be the second core? Does this account for SMT or just physical cores? Or do I need to write a mask based on the core_id , core_complex and/or ccd_id? I basically just want to read the current PsmMargin and then set it to -30 for all cores, I assume it is going to be eight cores for the 5800X3D. edit: I just realized that the value I'm trying to read here is probably already zero! |
Sets it to zero on all cores, I'm not sure what the correct values should look like for negative numbers. I tried "1e0010000000000000000000000000000000000000000000" for "-30" but that put the CPU in super slow mode :D Ok this idiot figured it out e2ffffffffffffff00000000000000000000000000000000 is the correct value for -30. You can just dot a negative number into the command I posted to set the offset!
|
I'm still working on it, slowly, but you can check: https://github.com/mann1x/ryzen_monitor_ng It should work also on the 3D, a lot of SMU commands are already implemented and can be changed via command line. But you need to use v0.1.4 of my version of ryzen_smu: https://gitlab.com/mann1x/ryzen_smu/-/tree/9a9499f519c4ba2e5ab985275edafeee4da66a2f |
@sfjuocekr For PSM margin I have an utility function which might give you an idea how to set it. https://github.com/irusanov/ZenStates-Core/blob/master/Utils.cs#L101 the parameter is 16bit only, for -30 it would be 0xffe2 As for cores, you have to account for the ccx as well. CoreMask is used for the get and set command for a single core and I also have a helper for it: Line 298 in 53dd1d6
For Zen3 and Zen4 you only have the ccx and core parameter. |
Yea, I was kind of tired last night and got put off by these lines and failed to get my math right:
Maybe ZenStates-Linux could include these or maybe instead of yet another monitoring utility with extra functionality we could get our heads together and make some dedicated control utility out of it (zenctl?) that uses libsmu from ryzen_smu. |
Yes, I agree that would be the best - to join forces and make one application which would be the alternative of RyzenMaster, but for Linux. I will add these in ZenStates-Linux at some point, but have no ETA. I had GTK3 GUI in the works, but also unfinished. |
What about Uno? |
First of all, thanks for all the work and updates on this tool.
I'm submitting the issue here since
https://github.com/irusanov/ZenStates-Linux
doesn't have an option to submit an issue.
I was trying to use the zenstates-linux and tried P-state and oc-enable modes but none of these do anything in realtime even though the response says it's applied. The processor is a Threadripper 3970X, so it's a matisse?
The text was updated successfully, but these errors were encountered: