[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] Issues with CLOCK on xen



On 2 December 2014 at 13:12, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote:
> On 2 Dec 2014, at 12:36, Toby Moore <toby.moore.0@xxxxxxxxx> wrote:
>>
>> Hi everyone,
>>
>> I've been following this mailing list for a while now. I've finally managed 
>> to get a simple blog running on Mirage and AWS. I've put up a couple of 
>> posts of my experience (http://is-awesome.net) but I doubt there'll be 
>> anything that's new or exciting to readers here.
>
> Not at all -- I just discovered the Pure CSS framework from reading it -- I 
> was just wondering what to do while converting my own blog :-)
>
>> One outstanding issue is that I can't seem to get the CLOCK working properly 
>> on AWS. It's fine for a unix build, but I don't have another xen host 
>> available right now and the deploy test cycle to AWS is pretty painful. 
>> Trying to get the current time on AWS gets me this:
>>
>>    Unsupported function gmtime called in Mini-OS kernel
>>    Do_exit called!
>>    base is 0x0 Page fault at linear address 8, rip cb67, regs 
>> 000000000034f908, sp 34f9b0, our_sp 000000000034f8c8, code 0
>>    Page fault in pagetable walk (access to invalid memory?).

You're using Clock.time () for this, I assume? I added this to the
start of mirage-skeleton/ethifv4/unikernel.ml (which I guess is where
you copied the code from):

  let start c net =
    C.log_s c (Printf.sprintf "Time is %f\n" @@ Clock.time ()) >>= fun () ->

and it printed 1417522247.474221 (which is the correct time) when I
ran it under Xen. I'm running Xen in VirtualBox for local testing,
which seems to work well.

Perhaps something else you're using has added a dependency on
mirage-clock-unix somehow?

> That's almost certainly some unexpected fallout due to the switch to 
> MiniOS-as-a-library.  We'll definitely want this working on Amazon's Xen 
> interface version! Any chance you could put this bug report up on 
> https://github.com/mirage/mirage/issues ?
>
>>
>> This is built with OCaml 4.01.0 with these OPAM packages:
>>    io-page                    1.1.1  Allocate memory pages suitable for 
>> aligned I/O
>>    mirage                     2.0.1  The Mirage library operating system
>>    mirage-clock-unix          1.0.0  A Mirage-compatible Clock library for 
>> Unix
>>    mirage-clock-xen           1.0.0  A Mirage-compatible Clock library for 
>> Xen
>>    mirage-conduit             2.0.0  Virtual package for the Mirage Conduit 
>> transpo
>>    mirage-console             2.0.0  A Mirage-compatible Console library for 
>> Xen an
>>    mirage-dns                 2.0.0  Virtual package for the Mirage DNS 
>> transports
>>    mirage-http                2.0.0  Mirage HTTP client and server driver 
>> for Unix
>>    mirage-net-unix            1.1.1  Ethernet network driver for Mirage, 
>> using tunt
>>    mirage-net-xen             1.1.3  Ethernet network device driver for 
>> Mirage/Xen
>>    mirage-types               2.0.1  Module type definitions for 
>> Mirage-compatible
>>    mirage-types-lwt           2.0.1  Lwt module type definitions for 
>> Mirage-compati
>>    mirage-unix                2.0.0  Mirage OS library for Unix compilation
>>    mirage-xen                 2.0.0  Mirage OS library for Xen compilation
>>    mirage-xen-minios          0.4.2  Xen MiniOS guest operating system 
>> library
>>
>> I'm not directly passing a clock device, my config.ml has these bits in it:
>>
>>    let main =
>>      foreign "Unikernel.Main" (http @-> console @-> kv_ro @-> kv_ro @-> job)
>>
>>    let unix_libs =
>>      match get_mode () with
>>      | `Unix -> ["mirage-clock-unix"]
>>      | _ -> []
>>
>>    let () =
>>        add_to_ocamlfind_libraries unix_libs;
>>        ...
>>
>> This is mostly copied out of the skeleton examples. I know the clock 
>> interface has been changing a bit recently but it works fine under unix. My 
>> guess is that the clock driver is skipped because it's not referenced 
>> (except in my code) but I'm not sure how to do that properly. How can I 
>> force it to be included?
>
> Over to Thomas for this -- the CLOCK interface is a little special since it's 
> only ever instantiated once.
>
> -anil
> _______________________________________________
> MirageOS-devel mailing list
> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel



-- 
Dr Thomas Leonard        http://0install.net/
GPG: 9242 9807 C985 3C07 44A6  8B9A AE07 8280 59A5 3CC1
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.