xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Simon Martin <smartin@milliways.cl>
Cc: "xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: VCPUOP_set_periodic_timer
Date: Fri, 15 Nov 2013 11:41:44 +0000	[thread overview]
Message-ID: <52860878.8010406@citrix.com> (raw)
In-Reply-To: <em0e63048f-7920-48f5-8392-cf0af10a1b08@smartin-alien>


[-- Attachment #1.1: Type: text/plain, Size: 2694 bytes --]

On 15/11/13 11:24, Simon Martin wrote:
> Hi Andrew,
>  
> The operating system I am trying to port to Xen is an industrial servo
> controller. We are currently running at 125 microsecond servo update
> rate on our bespoke hardware (at the moment MIPS64 and ARM) (hence the
> 125 microsecond ideal interrupt period). We will be driving EtherCAT
> servo drives that need to be updated at 500 microseconds (hence at
> least 500 microsecond interrupt period). If we can achieve this on a
> single core ARM11 clocked at 532 MHz, it must be achievable on PC
> hardware. As I said before the idea is to dedicate a CPU core to this
> with all other functions running on the other cores.
>  
> Luckily we can accept a reasonable amount of jitter on the EtherCAT
> network as we can hand over clock synchronisation to a slave. This
> gives us a little leeway.
>  
> Regards.
>  
>  

It certainly is achievable on PC hardware, but not under the standard
assumptions in virtualisation.  You want to use
VCPUOP_set_singleshot_timer, but be aware than there are still no normal
guarantees that your domain vcpu will be run when the timer expires; the
credit scheduler will pick the highest priority vcpu to run, which might
not be the one which is expecting a timer interrupt.

You should investigate using the arinc653 scheduler in Xen, which is a
realtime scheduler, and might be more appropriate for your usecase.

~Andrew


> ------ Original Message ------
> From: "Andrew Cooper" <andrew.cooper3@citrix.com
> <mailto:andrew.cooper3@citrix.com>>
> To: "Simon Martin" <smartin@milliways.cl
> <mailto:smartin@milliways.cl>>; "xen-devel@lists.xen.org"
> <xen-devel@lists.xen.org <mailto:xen-devel@lists.xen.org>>
> Sent: 14/11/2013 18:39:21
> Subject: Re: [Xen-devel] VCPUOP_set_periodic_timer
>  
>> On 14/11/2013 21:18, Simon Martin wrote:
>>> Hi all,
>>>  
>>> I need a periodic timer running at ideally at 125 microseconds and
>>> at least 500 microseconds. I've just found the
>>> VCPUOP_set_periodic_timer, however there is a comment saying
>>> "periods less than one millisecond may not be supported".
>>>  
>>> I will be running on an x64 machine. Is this supported? If not, is
>>> there any alternate means of generating a fast interrupt?
>>>  
>>> Regards.
>>
>> What is the usecase here?  125us is very short indeed.  Xen certainly
>> cant guarantee anything more accurate than 50us.  Unless the affected
>> vcpu is running uncontested on the hardware, there is very little
>> chance that the vcpu will indeed be woken up again in 125us.
>>
>> It sounds as if you are looking for some pseudo realtime system, at
>> which point you might want to consider a different scheduler.
>>
>> ~Andrew
>>


[-- Attachment #1.2: Type: text/html, Size: 5732 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  parent reply	other threads:[~2013-11-15 11:41 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-14 21:18 VCPUOP_set_periodic_timer Simon Martin
2013-11-14 21:39 ` VCPUOP_set_periodic_timer Andrew Cooper
2013-11-15 11:24   ` VCPUOP_set_periodic_timer Simon Martin
2013-11-15 11:36     ` VCPUOP_set_periodic_timer Keir Fraser
2013-11-15 11:45       ` VCPUOP_set_periodic_timer Simon Martin
2013-11-15 11:56         ` VCPUOP_set_periodic_timer Keir Fraser
2013-11-15 12:37           ` VCPUOP_set_periodic_timer Simon Martin
2013-11-15 13:10             ` VCPUOP_set_periodic_timer Keir Fraser
2013-11-15 13:13               ` VCPUOP_set_periodic_timer Andrew Cooper
2013-11-15 13:39                 ` VCPUOP_set_periodic_timer Keir Fraser
2013-11-15 11:41     ` Andrew Cooper [this message]
2013-11-15 12:02       ` VCPUOP_set_periodic_timer Simon Martin
2013-11-15 12:17         ` VCPUOP_set_periodic_timer Andrew Cooper
2013-11-15 12:46           ` VCPUOP_set_periodic_timer Nate Studer
2013-11-15 12:52             ` VCPUOP_set_periodic_timer Andrew Cooper
2013-11-15 12:54             ` VCPUOP_set_periodic_timer George Dunlap
2013-11-15 21:10       ` VCPUOP_set_periodic_timer Dario Faggioli
2013-11-16 20:37         ` VCPUOP_set_periodic_timer Simon Martin
2013-11-18 18:28           ` VCPUOP_set_periodic_timer Dario Faggioli
2013-11-26 14:50             ` PV guest timings Simon Martin
2013-11-26 15:11               ` Keir Fraser
2013-11-26 15:38                 ` Simon Martin
2013-11-26 23:33                   ` Dario Faggioli
2013-11-27  2:32                     ` Simon Martin
2013-11-27  8:46                       ` Dario Faggioli
2013-11-27 12:04                         ` Simon Martin
2013-11-27 10:38                   ` David Vrabel
2013-11-27 14:07                     ` Simon Martin
2013-11-26 23:31               ` Dario Faggioli
2013-11-27  2:36                 ` Simon Martin
2013-11-27  8:56                   ` Dario Faggioli
2013-11-27 13:00                     ` Simon Martin
2013-11-28 11:16                       ` Dario Faggioli
2013-11-28 11:57                         ` Simon Martin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52860878.8010406@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=smartin@milliways.cl \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).