Hi,

This is the code of the getaffinity system call:

SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len,
        unsigned long __user *, user_mask_ptr)
{
    int ret;
    cpumask_var_t mask;

    if ((len * BITS_PER_BYTE) < nr_cpu_ids)
        return -EINVAL;
    if (len & (sizeof(unsigned long)-1))
        return -EINVAL;

    if (!alloc_cpumask_var(&mask, GFP_KERNEL))
        return -ENOMEM;

    ret = sched_getaffinity(pid, mask);
    if (ret == 0) {
        size_t retlen = min_t(size_t, len, cpumask_size());

        if (copy_to_user(user_mask_ptr, mask, retlen))
            ret = -EFAULT;
        else
            ret = retlen;
    }
    free_cpumask_var(mask);

    return ret;
}


Given that videoperf passes sizeof(long) for the len parameter, this is going 
to fail if you run it on a machine with more than 64 cores (the first if 
statement in the code). Do you have more than 64 cores on your machine?

Anyway, the simplest workaround for the problem is:

1) Get the sources from:
https://github.com/ParsaLab/cloudsuite/tree/master/benchmarks/media-streaming

2) Comment out this line in client/files/videoperf/Makefile.in:
DEFS    += -DHAVE_SCHED_AFFINITY -DHAVE_EPOLL

3) Build the client yourself:
docker build --rm -t cloudsuite/media-streaming:client /path/to/client

Please let me know if this works for you.

Best,
Ivo

________________________________
From: Neda Nasiriani <[email protected]>
Sent: Wednesday, March 30, 2016 1:40 PM
To: kusumakar bodha
Cc: [email protected]
Subject: Re: Error media-streaming benchmark

Hello kusumakar,

I have the same problem and it happens on machines with more than 4 cores. If 
you try it on a machine with 4 or less cores this does not happen. It could be 
related to the cpu mask which is creating this problem for machines with >4 
cores. I hope it get resolved. Please let me know if you have any findings. 
Thanks

On Wednesday, March 30, 2016, kusumakar bodha 
<[email protected]<mailto:[email protected]>> wrote:
Hi all,


I'm trying to run the cloudsuite media-streaming benchmark and encountered the 
following error after I started the client.



Total clients = 4
Minimum number of sessions = 25
Maximum number of sessions = 500
Launching 4 clients on localhost
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result1.log 
--num-sessions=25 --rate=2
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result2.log 
--num-sessions=25 --rate=2
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result3.log 
--num-sessions=25 --rate=2
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result4.log 
--num-sessions=25 --rate=2
sizeof(fd_set) = 128
sizeof(fd_set) = 128
sizeof(fd_set) = 128
sizeof(fd_set) = 128
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ --rate=2 
--send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ --rate=2 
--send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
Run on hostname: f2ef7e2c3e74
Run on hostname: f2ef7e2c3e74
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ --rate=2 
--send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ --rate=2 
--send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
Run on hostname: f2ef7e2c3e74
Run at: Wed Mar 30 05:02:02 2016
Run on hostname: f2ef7e2c3e74
Run at: Wed Mar 30 05:02:02 2016


httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
Run at: Wed Mar 30 05:02:02 2016

httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
Run at: Wed Mar 30 05:02:02 2016

httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
grep: /output/*: No such file or directory
grep: /output/*: No such file or directory
peak_hunter/launch_hunt_bin.sh: line 56: 0*100/0: division by 0 (error token is 
"0")
Benchmark succeeded for 25 sessions
Launching 4 clients on localhost
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result1.log 
--num-sessions=500 --rate=50
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result2.log 
--num-sessions=500 --rate=50
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result3.log 
--num-sessions=500 --rate=50
Running command httperf --hog --server streaming_server 
--videosesslog=[/videos/logs/cl-240p-10-10000-10-5-00.log,/videos/logs/cl-360p-10-4000-10-5-00.log,/videos/logs/cl-480p-10-1600-10-5-00.log,/videos/logs/cl-720p-10-800-10-5-00.log],[0.1,0.3,0.4,0.2],[localhost,localhost,localhost,localhost]
 --epoll --recv-buffer=524288 --port 80 --output-log=/output/result4.log 
--num-sessions=500 --rate=50
sizeof(fd_set) = 128
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ 
--rate=50 --send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
Run on hostname: f2ef7e2c3e74
sizeof(fd_set) = 128
Run at: Wed Mar 30 05:02:02 2016

httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ 
--rate=50 --send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
Run on hostname: f2ef7e2c3e74
Run at: Wed Mar 30 05:02:02 2016

httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
sizeof(fd_set) = 128
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ 
--rate=50 --send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
Run on hostname: f2ef7e2c3e74
Run at: Wed Mar 30 05:02:03 2016

httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
sizeof(fd_set) = 128
httperf --hog --client=0/1 --server=streaming_server --port=80 --uri=/ 
--rate=50 --send-buffer=4096 --recv-buffer=524288 --epoll --call-stats-file=
Run on hostname: f2ef7e2c3e74
Run at: Wed Mar 30 05:02:03 2016

httperf: sched_getaffinity failed, rc=-1 errno=22 (Invalid argument)
grep: /output/*: No such file or directory
grep: /output/*: No such file or directory
peak_hunter/launch_hunt_bin.sh: line 56: 0*100/0: division by 0 (error token is 
"0")
Benchmark succeeded for 500 sessions
Maximum limit for number of sessions too low.
grep: /output/*: No such file or directory
(standard_in) 2: syntax error
grep: /output/*: No such file or directory
(standard_in) 2: syntax error
grep: /output/*: No such file or directory
(standard_in) 2: syntax error
grep: /output/*: No such file or directory
(standard_in) 2: syntax error
grep: /output/*: No such file or directory
(standard_in) 2: syntax error
Requests:
Replies:
(standard_in) 1: syntax error
Reply rate:
(standard_in) 1: syntax error
Reply time:
Net I/O:

What is the problem? The client is exiting immediately
I'm using Docker version 1.9.0, build 76d6bc9 and kernel: 4.4.0-14-generic
on ubuntu 14.04

Thank you
Kusumakar


--
Best Regards,
Neda

Reply via email to