<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
       Hi Bayard,<br>
    <br>
    22.05.2011 15:13, Bayard Bell пишет:<br>
    <blockquote
      cite="mid:AF376C16-7781-4646-BF95-5285D145B369@googlemail.com"
      type="cite">
      <div>What I've got at this point is: if I try to do the
        compilation with 2 virtual CPUs, the system falls over. If I try
        to do the compilation with 4-6 virtual CPUs, I never get
        significantly above 200% CPU utilisation. After 6 CPUs or so, I
        start to see stability problems in the host, possibly because
        Solaris tries to sync clocks across CPUs, which shows up more
        clearly if you build a debug kernel off the below. Here's the
        info on the workload I've been trying most frequently:</div>
      <div><br>
      </div>
      <div><a moz-do-not-send="true"
href="https://www.illumos.org/projects/illumos-gate/wiki/How_To_Build_Illumos">https://www.illumos.org/projects/illumos-gate/wiki/How_To_Build_Illumos</a></div>
      <div><br>
      </div>
      <div>Talking about it with other developers, the feedback is that
        VBox has problems where VMWare doesn't. Could you give a go and
        let me know what kinds of result you see? </div>
    </blockquote>
     Sorry, but could do much with profiling/debugging, as no longer
    work on VBox fulltime. General thinking, although, is that guest SMP
    may have some performance issues,<br>
    some of them are definitively bound to host scheduler behaviour. 
    One trick I could offer, is have shared folder shared among multiple
    1 vCPU Solaris VMs, and <br>
    deploy some form of distributed across  VMs build. This could be
    workaround for some performance issue.<br>
    Another approach is to try different host OS.<br>
    <br>
       Thanks,<br>
         Nikolay<br>
    <br>
    <br>
    <blockquote
      cite="mid:AF376C16-7781-4646-BF95-5285D145B369@googlemail.com"
      type="cite">
      <div>
        <div>On 11 May 2011, at 12:29, Nikolay Igotti wrote:</div>
        <br class="Apple-interchange-newline">
        <blockquote type="cite">
          <div>Bayard Bell wrote:<br>
            <blockquote type="cite">
              <blockquote type="cite">CPU isn't that easily "given" to
                the VM, as RAM pages, for example. VirtualBox internally
                need to run few threads doing disk/network IO. Same
                situation with host OS too, so essentially some
                experiments is the best way to figure out how many vCPUs
                is reasonable to give to the guest to get best
                performance.<br>
              </blockquote>
            </blockquote>
            <blockquote type="cite">
              <blockquote type="cite">    <br>
              </blockquote>
            </blockquote>
            <blockquote type="cite"><br>
            </blockquote>
            <blockquote type="cite">Any suggestions as to how to go
              about that methodically? <br>
            </blockquote>
            Well, just try some representative subset (10-20 mins of
            compilation) with 1,2,3,4... vCPUs and see the result :).<br>
            Could be easily automated with vboxshell and guest commands
            execution facility.<br>
            <br>
            <br>
            <blockquote type="cite">What I know is that the run queue
              seems to back up to the point of crushing the host if I
              provide only two vCPUs, while with 4 vCPUs, I only seem to
              get consumption of 2 actual CPUs. I've got a slight
              further wrinkle, insofar as the default behaviour of the
              build environment is to look at the number of CPUs and
              amount of memory and decide for itself what the
              appropriate level of parallelism is, although I can work
              around this by setting a fixed value before experimenting
              with CPU count. Just to give this a bottom line, if I
              haven't mentioned this previously: I've got a compile job
              that normally takes at most few hours on comparable bare
              metal, and it's taking several days under VBox. Resolving
              this is the difference between being able to get
              acceptably slower performance under VBox and needing to
              sort myself out with a separate system.<br>
            </blockquote>
            <blockquote type="cite">  <br>
            </blockquote>
            Is project you're compiling open source? This could make
            analysis simpler.<br>
            <br>
            <blockquote type="cite">
              <blockquote type="cite"><br>
              </blockquote>
            </blockquote>
            <blockquote type="cite">
              <blockquote type="cite">With compilation, especially if
                you compile a lot of small files, significant part of
                load is fork/exec performance (and so, VMM in the
                guest), and of course, IO does matter too.<br>
              </blockquote>
            </blockquote>
            <blockquote type="cite">
              <blockquote type="cite">    <br>
              </blockquote>
            </blockquote>
            <blockquote type="cite"><br>
            </blockquote>
            <blockquote type="cite">The I/O is trivial, but what I'm
              gathering is that the CPU overhead of the system calls is
              increased considerably. I don't see a lot of fork and exec
              load, but what I'm wondering is whether time spent in the
              kernel would actually be relatively longer, such that
              relatively lightweight system calls on a normal host would
              add up to a considerably higher percentage of CPU time in
              a virtual environment.<br>
            </blockquote>
            <blockquote type="cite">  <br>
            </blockquote>
            Syscalls per se aren't affected much by virtualization, but
            privileged operations they perform sometimes are.<br>
            Generally, this need deeper analysis, and you may want to
            try running same guest on different host OS (ideally with<br>
            the same hardware), to see if some host specifics presented.<br>
            <br>
            Also no sure if OSX is best OS to run SMP load in general.<br>
            <br>
            <blockquote type="cite">
              <blockquote type="cite">Don't think you really need that.
                As VBox doesn't do explicit gang scheduling, some
                assistance from host scheduler on that would be helpful,
                not explicit assignment of CPU affinity. In theory, good
                scheduler shall gang schedule threads with the same
                address space even without additional hints, as this
                will likely increase performance. Not sure if OSX does
                that, although.<br>
              </blockquote>
            </blockquote>
            <blockquote type="cite">
              <blockquote type="cite">    <br>
              </blockquote>
            </blockquote>
            <blockquote type="cite"><br>
            </blockquote>
            <blockquote type="cite">Thanks for that info. I'll see if
              there's any documentation or source to satisfy my
              curiosity on this point. It might also be useful to see
              what DTrace can tell me. Does VBox have its own DTrace
              probes to help with these kinds of problems?<br>
            </blockquote>
            <blockquote type="cite"><br>
            </blockquote>
            <blockquote type="cite">  <br>
            </blockquote>
             Don't think VBox has much of probes on its own, but even OS
            traces could be sufficiently useful.<br>
            <br>
              <br>
             Nikolay<br>
            <br>
          </div>
        </blockquote>
      </div>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
vbox-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:vbox-dev@virtualbox.org">vbox-dev@virtualbox.org</a>
<a class="moz-txt-link-freetext" href="http://vbox.innotek.de/mailman/listinfo/vbox-dev">http://vbox.innotek.de/mailman/listinfo/vbox-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>