Problem with chrt

Gordon Messmer yinyang at eburg.com
Mon Sep 27 01:04:36 UTC 2010


On 09/26/2010 12:22 PM, JD wrote:
>
> $ sudo chrt 0 "./freq -s120 -u0 -r"
> chrt: failed to set pid 0's policy: Invalid argument
> $ sudo chrt 0 './freq -s120 -u0 -r'
> chrt: failed to set pid 0's policy: Invalid argument

0 isn't valid for the default policy (SCHED_RR).  "chrt -m" displays the 
minimum and maximum values valid for each of the policies.

> #!/bin/sh
> sudo nice --60 ./freq -s120 -u0 -r&
> ps -ef | grep freq | egrep -v 'grep|sudo' | awk '{ print $2 }' | xargs
> sudo chrt -f -p 0
>
> When I ran it, I got:
> [1]    11340<<<<<  This is the pid of the sudo, and not of ./freq
> pid 11348's current scheduling policy: SCHED_OTHER
> pid 11348's current scheduling priority: 0
>
> So, the  gist  of this is that I requested a FIFO scheduling policy by
> the -f option to chrt.
> Yet, chrt decided to use SCHED_OTHER.

I don't know about the output, but again, 0 isn't valid for the FIFO policy.

> The joke is, it does not even parse it's args for the command the user
> wants to run.

Yes, it does:

# chrt 5 ls
bin  boot  cgroup  dev	etc  home  lib	lib64  lost+found  media  mnt  opt 
  proc  root	sbin  selinux  srv  sys  tmp  usr  var

> To wit (from soource code):
>
>           while((i = getopt_long(argc, argv, "+bfiphmorvV", longopts,
> NULL)) != -1)

getopt_long won't return non-option arguments.  Those are parsed later. 
  getopt returns option arguments and modifies argv to remove them after 
parsing.  Non-option arguments are left in argv.


More information about the users mailing list