Re: HOWTO: Set maximum CPU consumption in percentage by any process
@abcuser,
Thank you for looking into this a little further. I'm can't wait to get this working!
I have tried the following combinations:
1:
Code:
BLACK_PROCESSES_LIST='Plex[[:blank:]]Transcoder'
2:
Code:
BLACK_PROCESSES_LIST="Plex[[:blank:]]Transcoder"
3:
Code:
BLACK_PROCESSES_LIST='/usr/lib/plexmediaserver/Resources/Plex[[:blank:]]Transcoder'
4:
Code:
BLACK_PROCESSES_LIST="/usr/lib/plexmediaserver/Resources/Plex[[:blank:]]Transcoder"
5:
Code:
BLACK_PROCESSES_LIST="`/usr/lib/plexmediaserver/Resources/Plex[[:blank:]]Transcoder`"
I know you said last night that your script is not designed to accept direct paths, #3, 4, and 5, and while #3 and #4 do not work, #5 does work. The only thing is that it still kicks out the libass.so.4 error. I posted a question in the Plex forums about this file, but haven't had a response, yet.
==============
While writing this, I just tried this on a whim:
Code:
BLACK_PROCESSES_LIST="`Plex\ Transcoder`"
When manually starting the daemon, it immediately outputs:
Code:
/usr/bin/cpulimit_daemon.sh: line 9: Plex Transcoder: command not found
I thought this was a sign of it not working. It turns out, it seems, that it may simply be a notification that the process command name is not found in the currently running processes. As soon as I start and/or stop a video, as expected, the output reads
Code:
Process XXXX detected
Process XXXX dead!
If the "command not found" is an acceptable output from your script, this may work just fine for me. I'm going to test it out with multiple streams in a little bit. I have a meeting to go to right now.
Thank you for your time!
Re: HOWTO: Set maximum CPU consumption in percentage by any process
Quote:
Originally Posted by
brettgavin
5:
Code:
BLACK_PROCESSES_LIST="`/usr/lib/plexmediaserver/Resources/Plex[[:blank:]]Transcoder`"
I know you said last night that your script is not designed to accept direct paths, #3, 4, and 5, and while #3 and #4 do not work, #5 does work. The only thing is that it still kicks out the libass.so.4 error.
Using above command with "`" character it means EXECUTE program in quotes and set output to variable BLACK_PROCESS_LIST. I don't think this is going to be working correctly, because executing a program in my humble opinion will not output a program name. I would be really surprised if this works out.
Re: HOWTO: Set maximum CPU consumption in percentage by any process
Please forgive my limited understanding of scripting. I took some classes many years ago, but I dont remember a ton of it.
I understand what you're saying about the backticks actually executing a program. Do you think it works because the program name and the command name appear to be identical?
----
Using this:
Code:
BLACK_PROCESSES_LIST="`Plex\ Transcoder`"
I set the daemon interval to 60 to give the transcoder a chance to process enough video at the beginning to avoid unnecessary buffering.
It seems to work fine, even with that simple output message about the command not being found (this only appears when running the script manually; does not appear on boot).
Here are a couple screenshots:
before 60s check
http://i.imgur.com/cjbVH.png
after 60s check
http://i.imgur.com/u1m86.png
----
If this does continue to work well, I have one more idea that I could use your help with.
I would like to be able to set the daemon to check every x seconds (like you have it setup) but upon finding the blacklisted command, wait one additional interval cycle before enacting the cpulimit function. Do you have an idea of how to go about this?
Re: HOWTO: Set maximum CPU consumption in percentage by any process
@abcuser Here is a link to my post and setup instructions that you helped me get working:
http://brettgavin.wordpress.com/
Here is the Plex forum post about it as well:
http://forums.plexapp.com/index.php/...neous-streams/
Re: HOWTO: Set maximum CPU consumption in percentage by any process
I have set up the version of this script from Sept 2010 as found here. While it seems to work fine in general, I have an issue that I don't see mentioned anywhere in this thread.
I placed "mysqldump" in the blacklist, as we run a backup script which uses this as part of the archiving. Mysqldump is limited, but all the instances of mysql are as well. I tried adding the -w option to grep in cpulimit_daemon.sh (matches exact word only) with no change.
I'm a little fuzzy with regex and I'm not sure exactly what's going on in the script so I'm stuck. Apparently it matches anything, in whole or in part, to the strings delimited in the blacklist. Can anyone verify and/or offer a solution to make it work only on mysqldump and not mysql as well?
Thanks.
Re: HOWTO: Set maximum CPU consumption in percentage by any process
@David,
1. What is the output of command:
top -b -n1 -c
2. What is the output of command:
top -b -n1 -c | grep -E 'mysqldump'
Does this command also list the mysql process?
3. What is exact BLACKLIST variable?
4. What is your CPU_LIMIT variable?
1 Attachment(s)
Re: HOWTO: Set maximum CPU consumption in percentage by any process
Answer to #1 is attached file.
Answer to #2 is:
Code:
root@localhost:~# top -b -n1 -c | grep -E 'mysqldump'
30159 root 20 0 11684 912 784 S 0 0.0 0:00.00 grep --color=auto -E mysqldump
Answer to #3 is:
Code:
BLACK_PROCESSES_LIST= "rdiff-backup|mysqldump"
Answer to #4 is:
Strangely enough, I removed the "mysqldump" portion of the blacklist and restarted and it still cut off at 20%. Is it possible this is acting like everything is subject to limiting? Is my blacklist variable format correct?
I should mention that these results are with the cpulimit stopped as the server quickly fails (due to mysql cutting off in so many threads) when it is on.
Thanks for your help.
Re: HOWTO: Set maximum CPU consumption in percentage by any process
Quote:
Originally Posted by
david.rahrer
Answer to #2 is:
Code:
root@localhost:~# top -b -n1 -c | grep -E 'mysqldump'
30159 root 20 0 11684 912 784 S 0 0.0 0:00.00 grep --color=auto -E mysqldump
from #2 I see there is no "mysqldump" program running and so it can't be cpu-limited if it does not exists. Was program mysqldump really running when you executed the #2 command?
Quote:
Originally Posted by
david.rahrer
Strangely enough, I removed the "mysqldump" portion of the blacklist and restarted and it still cut off at 20%. Is it possible this is acting like everything is subject to limiting? Is my blacklist variable format correct?
BLACKLIST only limits processes listed except if this variable is empty then it limits all of the processes (as described in first post of this thread).
Stop or restart also kills all of the cpulimit processes so everything that was limited is getting full CPU access again.
Re: HOWTO: Set maximum CPU consumption in percentage by any process
The following is the response from #2 when the mysqldump script is running.
Code:
root@WSN005:~# top -b -n1 -c | grep -E 'mysqldump'
19923 root 20 0 99012 3092 1312 S 4 0.1 0:03.16 /usr/bin/mysqldump -Q --single
19930 root 20 0 9384 880 760 S 0 0.0 0:00.00 grep --color=auto -E mysqldump
Re: HOWTO: Set maximum CPU consumption in percentage by any process
@david.rahrer, this looks good to me. Don't know what the problem is. I don't use mysql, so maybe there is something else that is wrong...