Alex Smith
0f680f2a83
clang-format fix
2019-03-14 16:30:52 +00:00
Alex Smith
2ab46df4c3
Disable softrealtime (SCHED_ISO) and renice by default
...
SCHED_ISO is not supported by upstream kernels, so don't try to use this by
default since for most users it will result in an error log that trying to
set the scheduling policy fails.
Without extra system configuration, we will also not have permission to renice
processes by default, so out of the box doing this will fail as well.
Users that wish to use these features can enable them from the config once
they have configured their system appropriately.
2019-03-14 15:00:49 +00:00
Marc Di Luzio
1482a2b39e
Get the gpu index for both get and set (thanks @rezzafr33!)
2019-03-12 08:52:58 +00:00
Marc Di Luzio
c1d06f2ad5
Try and make an educated guess at the correct nvidia gpu index
...
This should hopefully fix issue #113 , where the user was in the common situation of having an intel and an nvidia GPU, at card0 and card1 respectively, but the nvidia gpu was [gpu:0] according to the driver
2019-03-11 21:58:51 +00:00
Marc Di Luzio
dc1258d750
Automatically adjust the nvidia gpu index
...
The drm device ID doesn't match up with the pci device as expected, spotted by issue #113
I can't test this myself just yet, will need data from the user in question to verify PCIDevice is the right value
2019-03-11 16:27:49 +00:00
Marc Di Luzio
fec32ac53d
Remove the nv_perf_level config option and figure it out programmatically
...
This also fixes the instances in testing where we don't have the nv overclock in use, but we do have the mode set
Solves issues explaining the what the perf_level actually meant, and future proofs for any PR that wants to set individual perf levels
2019-03-10 15:19:34 +00:00
Marc Di Luzio
873d0a224b
Remove passing the vendor to gpuclockctl
2019-03-10 15:19:34 +00:00
Alex Smith
c49cd45e01
Ensure that we null terminate the process output buffer in run_external_process
2019-03-10 10:51:15 +00:00
Alex Smith
8bb7c901de
Fix typo (default_timout -> default_timeout)
2019-03-10 10:47:17 +00:00
Marc Di Luzio
7fb1950357
Fix formatting
2019-03-10 10:32:08 +00:00
Marc Di Luzio
54d7d3f259
Allow nv_perl_level and nv_powermizer_mode to be set independently
2019-03-10 10:32:08 +00:00
Marc Di Luzio
834a18aab4
Implement nv_powermizer_mode option to allow setting the Nvidia powermizer mode
2019-03-10 10:32:08 +00:00
Marc Di Luzio
9ade4481c3
Change AMD overclocking to simply be setting the power_dpm_force_performance_level file for now
...
This covers the MVP for now, and simply allows pinning the power level to "high"
Full overclocking set up is somewhat more complicated, and it'll be better to implement that at the same time as the same for Nvidia, where we're currently only really setting the top end power level
2019-03-10 10:32:08 +00:00
Marc Di Luzio
20efaaa33f
Rename the core and mem stats to nv_ prefix
...
These will be NV only going forward, as AMD needs a different chunk of work
2019-03-10 10:32:08 +00:00
Marc Di Luzio
6a240d550e
Extend the sleep for the child gamemode in tests
2019-03-08 12:32:08 +00:00
Marc Di Luzio
0efd65fc78
set the default gov not the desired gov in tests
2019-03-08 12:14:01 +00:00
Marc Di Luzio
b6da948ca2
Add the output to the log for external processes that have failed
2019-03-07 17:51:57 +00:00
Marc Di Luzio
c215626ccd
Add "script_timeout" config value to control if a user wants to extend the script timeout before kill value
2019-03-07 17:51:57 +00:00
Marc Di Luzio
53d1700a68
Add the timout to the call signature of run_external_process
2019-03-07 17:51:57 +00:00
Marc Di Luzio
4578af47ba
Combine the two run_external_process functions so they both have the same timeout protection
2019-03-07 17:51:57 +00:00
Marc Di Luzio
e9ff2cbb10
Implement a timeout in run_external_process
2019-03-07 17:51:57 +00:00
Marc Di Luzio
1665447350
Use run_external_process for the script execution
...
This protects the main process against script exection and allows more detailed error handling
2019-03-07 17:51:57 +00:00
Marc Di Luzio
5facf2bba5
Refactor out script execution
2019-03-07 17:51:57 +00:00
Marc Di Luzio
024acddf90
Run the custom start scripts to after the other optimisations
...
This ensures the other featues are applied first, and the scripts can react if needed to those settings
2019-03-07 17:51:57 +00:00
Marc Di Luzio
9df1dd857c
Try waiting for the reaper thread at the start of tests if needed
2019-03-07 17:51:57 +00:00
Alex Smith
3c28e84700
Merge pull request #105 from mdiluz/auto-detect-vendor
...
Detect the GPU vendor automatically
2019-03-04 08:43:58 +00:00
Marc Di Luzio
7f6f32d284
Actually reject requests if require_supervisor is hit
2019-02-22 15:58:46 +00:00
Marc Di Luzio
c1dfd8bbc4
Add gamemode error strings to printouts to help debug issues
2019-02-21 17:34:20 +00:00
Marc Di Luzio
218dc9dab8
Fix up formatting
2019-02-21 17:34:20 +00:00
Marc Di Luzio
70c317233f
Wait for the child to finish up
2019-02-21 17:34:20 +00:00
Marc Di Luzio
3a624350d1
Add flavor to error log messages
2019-02-21 17:34:20 +00:00
Marc Di Luzio
baf295773b
Implement supervisor tests
2019-02-21 17:34:20 +00:00
Marc Di Luzio
b28efdb555
Correct the names and return 0 for success
2019-02-21 17:34:20 +00:00
Marc Di Luzio
602afdcbb7
Add check against require_supervisor variable
2019-02-21 17:34:20 +00:00
Marc Di Luzio
1d40c0cc1b
Refactor to use single internal functions for register, unregister and query
2019-02-21 17:34:20 +00:00
Marc Di Luzio
d4fdd9e3b4
Correct internal name for query_status_for
2019-02-21 17:34:20 +00:00
Marc Di Luzio
de1049f070
Fix comments
2019-02-21 17:34:20 +00:00
Marc Di Luzio
c2f7e971c6
Implement game_mode_query_status_for as well
2019-02-21 17:34:20 +00:00
Marc Di Luzio
1430c0b831
Implement supervisor features using new config variables
...
This allows direct control over who can make requests on behalf of other processes
require_supervisor can also be used to allow a supervisor to take direct control of gamemode on the system (perhaps a GUI, or game launcher)
2019-02-21 17:34:20 +00:00
Marc Di Luzio
d60ac23daa
Add a helper function for getting if a config list contains a string
2019-02-21 17:34:20 +00:00
Marc Di Luzio
c5f58c56d0
Hook up interfaces for functions to register another process
2019-02-21 17:34:20 +00:00
Marc Di Luzio
de390be93d
Add unused to now unused hex function
2019-02-21 17:33:58 +00:00
Marc Di Luzio
ebe525d04e
Fix up testing now that we detect the vendor
2019-02-21 17:26:14 +00:00
Marc Di Luzio
91deffb6b4
Fill in the GPU vendor automatically
2019-02-21 17:26:14 +00:00
Marc Di Luzio
0847d3b452
Remove the vendor config value in prep for it to be auto-detected
2019-02-21 17:26:14 +00:00
Alex Smith
d582b580b2
Merge pull request #104 from mdiluz/more-testing
...
Add more test coverage
2019-02-21 14:10:44 +00:00
Marc Di Luzio
94b6a34f65
Add test for gamemoderun and the reaper thread
...
Using a simple test allows us to check both at once
2019-02-20 18:08:49 +00:00
Marc Di Luzio
42d7503482
Adjust checking in gpuclockctl to assist when errors happen
2019-02-20 18:08:24 +00:00
Marc Di Luzio
ab5fdad3cb
Give the child more time to quit
2019-02-20 17:53:13 +00:00
Marc Di Luzio
e36a172144
Add full test for GPU settings
2019-02-20 17:53:13 +00:00