Re: How to bind a thread to a CPU?

2015-06-13 Thread Stefan Andritoiu
Hi Neel, On Sat, Jun 13, 2015 at 9:00 PM, Neel Natu wrote: > Hi Stefan, > > On Sat, Jun 13, 2015 at 3:33 AM, Stefan Andritoiu > wrote: >> Hi, >> >> How can I pin a thread to run only on a specific CPU? >> Is it enough just to set the "struct cpuset *td

How to bind a thread to a CPU?

2015-06-13 Thread Stefan Andritoiu
Hi, How can I pin a thread to run only on a specific CPU? Is it enough just to set the "struct cpuset *td_cpuset" of the thread? Thank you, Stefan ___ freebsd-virtualization@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-virt

Are the sched_choose() or tdq_choose() functions called after returning from an interrupt?

2015-06-12 Thread Stefan Andritoiu
Hello, When returning from an interrupt, does it switch directly the thread that was interrupted? Or is the scheduler called to choose a thread to run (most probable the thread that was interrupted)? More specifically, are the sched_choose() or tdq_choose() functions called after returning from a

What is the sequence of context switches when an IPI is received?

2015-06-11 Thread Stefan Andritoiu
Hello, >From the FreeBSD Handbook: "FreeBSD deals with interrupt handlers by giving them their own thread context". >From my understanding when a IPI is received the thread that will run it is placed on the real-time runq, and the scheduler will be invoked to schedule it. So the sequence should b

Re: Lock Holder Preemption on bhyve

2015-06-11 Thread Stefan Andritoiu
methods in which the guest is not aware that it is a guest. In hopes to offer a solution to LHP, regardless of the guest OS. Thank you, Stefan On Thu, Jun 11, 2015 at 12:31 PM, Roger Pau Monné wrote: > Hello, > > El 06/06/15 a les 0.59, Stefan Andritoiu ha escrit: >> Hello everyone

Re: Gang scheduling implementation in the ULE scheduler

2015-06-11 Thread Stefan Andritoiu
On Thu, Jun 11, 2015 at 3:02 AM, Neel Natu wrote: > Hi Stefan, > > On Wed, Jun 10, 2015 at 1:14 PM, Stefan Andritoiu > wrote: >> Hello, >> >> I am currently working on a gang scheduling implementation for the >> bhyve VCPU-threads on FreeBSD 10.1. >>

Re: Gang scheduling implementation in the ULE scheduler

2015-06-10 Thread Stefan Andritoiu
Hi Peter, Yes, I think it is lightly loaded. I am trying to run a FreeBSD guest with 2 VCPUs on a 4 CPU host, with no other program running. But I am having the same problem even when I start a 1 VCPU guest. later, Stefan On Wed, Jun 10, 2015 at 11:40 PM, Peter Grehan wrote: > Hi Stefan, > >> Wh

Gang scheduling implementation in the ULE scheduler

2015-06-10 Thread Stefan Andritoiu
Hello, I am currently working on a gang scheduling implementation for the bhyve VCPU-threads on FreeBSD 10.1. I have added a new field "int gang" to the thread structure to specify the gang it is part of (0 for no gang), and have modified the bhyve code to initialize this field when a VCPU is crea

Implementation of gang-scheduling for bhyve VCPUs

2015-06-05 Thread Stefan Andritoiu
Hello, I have broken the implementation of gang-scheduling in three steps: 1. Marking threads that should be gang scheduled - add a custom field "int gang" to the FreeBSD thread structure, defined in proc.h - create a custom ioctl request code VM_SET_GANG, that will set the 'gang' field of the VCP

Lock Holder Preemption on bhyve

2015-06-05 Thread Stefan Andritoiu
Hello everyone, My name is Stefan Andritoiu and I'm currently studying Computer Science in my 4th year at the University POLITEHNICA of Bucharest. I'm fairly new to the FreeBSD operating system, having only a background in Linux. For the past few months I've been investigating the

Setting custom field in struct thread from bhyverun code

2015-06-05 Thread Stefan Andritoiu
I've added a new field to struct thread and want to set it's value when the VCPU thread is created. I need this new field in the ULE scheduler. My plan was this: in the fbsdrun_start_thread() function make a custom-ioctl call {ioctl(ctx->fd, VM_SET_CUSTOM, ..)} to set it. But I have no idea how to

Re: Where are the VCPU threads created?

2015-06-03 Thread Stefan Andritoiu
On Wed, Jun 3, 2015 at 8:17 PM, Peter Grehan wrote: >> I see that in the main() function of bhyverun.c it adds CPU0 by >> calling fbsdrun_addcpu(ctx, 0, 0, rip). But I can't find where the >> other VCPUs are added. Or if the 'guest_ncpus' variable is ever used >> (except for error checks) > > > H

Where are the VCPU threads created?

2015-06-03 Thread Stefan Andritoiu
I see that in the main() function of bhyverun.c it adds CPU0 by calling fbsdrun_addcpu(ctx, 0, 0, rip). But I can't find where the other VCPUs are added. Or if the 'guest_ncpus' variable is ever used (except for error checks) ___ freebsd-virtualization@fr

How to tell if current running thread can be preempted?

2015-04-28 Thread Stefan Andritoiu
In Linux, in the scheduler function, it check if(!preempt_count() & PREEMPT_ACTIVE). How does the ULE scheduler tell if it can preempt the current thread? Is there an equivalent to the preempt_count() function and the PREEMPT_ACTIVE macro? Also, can this information, of a current thread running in

Bhyve: Investigating poor guest performance when host is busy

2015-03-31 Thread Stefan Andritoiu
Problem intro: - Started a make -j 20 buildworld on the host to peg the cpus - Started a 2 and 4 vcpu FreeBSD guest and time how long it takes to boot up - Started a 1 vcpu FreeBSD guest and time how long it takes to boot up. It is always much faster than the 2 or 4 vcpus. My suspicion: I suspect