FlyGoat / RyzenAdj

Adjust power management settings for Ryzen APUs
GNU Lesser General Public License v3.0
1.7k stars 123 forks source link

Question about vcn socclk and lclk #79

Open TechieAndroid opened 3 years ago

TechieAndroid commented 3 years ago

What "values" do the vcn options take and what does it directly affect? -s, --max-vcn= Maximum Video Core Next (VCE - Video Coding Engine) (Value) -t, --min-vcn= Minimum Video Core Next (VCE - Video Coding Engine) (Value)

What is lclk? And what "values" do the lclk options take and what does it directly affect? -u, --max-lclk= Maximum Data Launch Clock (Value) -v, --min-lclk= Minimum Data Launch Clock (Value)

soc is a general term but what does it refer to in this case? And what does it directly affect? -o, --max-socclk-frequency= Maximum SoC Clock Frequency (MHz) -p, --min-socclk-frequency= Minimum SoC Clock Frequency (MHz)

I tried to research these things on my own but came up without proper answers to my questions.

Benman2785 commented 3 years ago

@TechieAndroid VCE is AMDs VideoCodingEngine - it handels AMD AMF - if you OC it you will have a higher performance on using ReLive or OBS with AMD AMF Encoder - you maybe can reduce "encoding lag" when streaming high-quality stuff // but i would not recommend that (as i dont know what max frequency would be 24/7 safe...)

lclk = fixed frequency at which the IO Hub Controller (PCIe etc) operates // have in mind that higher PCIe clocks (100MHz standard; 102 often max) will cause instability and often crash - usually the benefit is minimal

socclk-frequency = should be internal bus clock; set it to high and your PC will crash; actually i would also leave that at default

so in conclusion: if you use a Ryzen 4C/8T APU in a Laptop with a dGPU AND you want to stream with it then you could do a slight OC of VCE and increase performance of AMD AMF Encoder on he iGPU of APU and play the game only on dGPU again, as i said, i dont know what is safe to set here = we need more info ;)

the other 2 should be left stock...

TechieAndroid commented 3 years ago

Thanks for the feedback.

I knew about the encoder and how it works, but I didn't know what values I could set in the parameter. I'll experiment starting around 1000MHz to see what happens, and inc/dec depending on the results.

Falcosc commented 3 years ago

Hi @TechieAndroid do you have an AMD Ryzen 7 3700U? If yes I would like to invite you on the PTable tests.

My Renoir doesn't support any clock related parameters at all, so I couldn't implement table values for clock related parameters. For example: I have 3 or more clock values and don't know which of them is the min and which is max, because clock value changes are not supported on Renoir.

I hope you have windows because the Linux build isn't ready. https://github.com/FlyGoat/RyzenAdj/issues/94

TechieAndroid commented 3 years ago

Hi @TechieAndroid do you have an AMD Ryzen 7 3700U? If yes I would like to invite you on the PTable tests.

My Renoir doesn't support any clock related parameters at all, so I couldn't implement table values for clock related parameters. For example: I have 3 or more clock values and don't know which of them is the min and which is max, because clock value changes are not supported on Renoir.

I hope you have windows because the Linux build isn't ready. https://github.com/FlyGoat/RyzenAdj/issues/94

I do have a Ryzen 7 3700U (Picasso). I also have a Ryzen 3 2200G (Raven Ridge).

I took a look at your fork but I don't really understand what's different about it from FlyGoat's RyzenAdj.

But I wouldn't mind helping out. I'd just like to know what it's for.

Falcosc commented 3 years ago

At first only output of the power metrics to help understand the value changes better.

For example most people can not differentiate between:

And if I can map all options to the according values of the ptable I could add a "--check" paramter to write an error message if ptable limit did not change after adjustment (most common problem for the user, because SMU told ok, but did not change the value)

But most people do just want to know what are the current values before changing an unknown value. For that reason we start with viewing all current values with the --info command

ryzenadj.exe --info 2>nul
CPU Family: Renoir
SMU BIOS Interface Version: 17
PM Table Version: 370003
|       Name       |   Value   |      Paramter      |
|------------------|-----------|--------------------|
| STAPM LIMIT      |    35.000 | stapm-limit        |
| STAPM VALUE      |     4.746 |                    |
| PPT LIMIT FAST   |    35.000 | fast-limit         |
| PPT VALUE FAST   |    11.651 |                    |
| PPT LIMIT SLOW   |    21.000 | slow-limit         |
| PPT VALUE SLOW   |     7.428 |                    |
| StapmTimeConst   |     1.000 | stapm-time         |
| SlowPPTTimeConst |    30.000 | slow-time          |
| PPT LIMIT APU    |    15.000 | apu-slow-limit     |
| PPT VALUE APU    |     0.000 |                    |
| TDC LIMIT VDD    |    44.000 | vrm-current        |
| TDC VALUE VDD    |     1.577 |                    |
| TDC LIMIT SOC    |    13.000 | vrmsoc-current     |
| TDC VALUE SOC    |     0.735 |                    |
| EDC LIMIT VDD    |   100.000 | vrmmax-current     |
| EDC VALUE VDD    |    53.391 |                    |
| EDC LIMIT SOC    |    17.000 | vrmsocmax-current  |
| EDC VALUE SOC    |     0.000 |                    |
| THM LIMIT CORE   |    97.000 | tctl-temp          |
| THM VALUE CORE   |    40.479 |                    |
| STT LIMIT APU    |    50.000 | apu-skin-temp      |
| STT VALUE APU    |    19.223 |                    |
| STT LIMIT dGPU   |     0.000 | dgpu-skin-temp     |
| STT VALUE dGPU   |     0.000 |                    |
TechieAndroid commented 3 years ago

At first only output of the power metrics to help understand the value changes better.

For example most people can not differentiate between:

  • limit change message response is ok but limit is not applied (ptable reports old value): solution - response ok does not mean that your device does support this change, try something else to improve performance
  • limit change message response is ok, limit got applied, but another limit (visible in ptable) is holding you back: solution - change the other limit
  • limit change message response is ok, limit got applied, but a hidden limit is holding you back (ptable does report that all values are below limit) solution - you can stop searching for improvements over SMU commands. Maybe ACPI/EC is pulling the limit

Okay correct me if I'm wrong but what you're trying to say is you just want to make it so you can pull the original clock states and other values to compare before setting new ones?

Sorry the english was really broken so I had trouble reading it.

Falcosc commented 3 years ago

I want to handle both cases. I want the to show old values with the --info option if no value change arguments are given, to help people who are unsure about which numbers need to be entered in order to increase a value.

And I guess more important for avoid confusion, I want the value after the change. Because ryzenAdj change message tells that response is ok, but in reality ptable tells us that your value was not applied.

The Problem is that most monitoring tools do only show the actual value, but not the limit. Which makes it really hard to find which values need to be adjusted to increase the power draw. The amount of issues did tell us that this is a problem. I did already try to fix it with more documentation.

Thanks for being honest about my broken english. That could be a very important problem. If you have even more time, could you please help me to improve the phrasing of our 2 wiki pages? https://github.com/FlyGoat/RyzenAdj/wiki/FAQ https://github.com/FlyGoat/RyzenAdj/wiki/Renoir-Tuning-Guide I did put 15000 characters of broken English into them ;). If the text is difficult to understand too, then all the effort of making the topic more easy to understand could be wasted. The FAQ is more important if my tuning guide is too long.

Thank you