From: David Brown on
I'm planning on putting together a new workstation, and would like to
here some opinions on graphics cards. It will be a reasonably powerful
machine (i7-860, most likely), and I'd like a fairly powerful graphics
card to go with it (though I'm not aiming for extremes here). Support
for two screens is a priority.

My first question is, am I correct in thinking Nvidia is the best choice
for Linux driver support these days? I am pragmatic about binary
drivers - I'd prefer open source drivers if they work well enough, but I
can live with binary graphics drivers if they are solid, work with a
reasonable range of distributions (mainly Ubuntu 9.10 64-bit, but I want
to try out several others while the machine is new).

Secondly, I need to be able to work with a demanding windows-only
program that needs powerful 3D graphics (I'd also like to run some
windows-only games, but that's a bonus) - I don't think Wine will be
suitable. I'd like to avoid dual-boot, so that I can avoid using
Windows for other purposes. That means virtualisation.

The three options I am looking at here are Virtual Box, Xen, and KVM. I
am familiar with Virtual Box (with both Windows and Linux hosts and
guests), and find it very easy to work with, but 3D support is a bit
limited. Can a Windows machine running under Xen or KVM get more direct
access to graphics hardware? And if so, how does that play along with
the Linux host? And are there differences depending on the graphics
card, or will any supported card work the same?

Any thoughts or experiences would be appreciated.

David
From: Nico Kadel-Garcia on
On Jan 22, 9:08 am, David Brown <da...(a)westcontrol.removethisbit.com>
wrote:
> I'm planning on putting together a new workstation, and would like to
> here some opinions on graphics cards.  It will be a reasonably powerful
> machine (i7-860, most likely), and I'd like a fairly powerful graphics
> card to go with it (though I'm not aiming for extremes here).  Support
> for two screens is a priority.

Go to www.tomshardware.com for basic recommendations, and
http://www.linux-drivers.org/ to hunt for driver compatibility.

> My first question is, am I correct in thinking Nvidia is the best choice
> for Linux driver support these days?  I am pragmatic about binary
> drivers - I'd prefer open source drivers if they work well enough, but I
> can live with binary graphics drivers if they are solid, work with a
> reasonable range of distributions (mainly Ubuntu 9.10 64-bit, but I want
> to try out several others while the machine is new).

NVidia remains a problem. While many folks find it useful, NVidia's
insistence on proprietary OpenGL drivers to take full advantage of
their card's features remains a serious compatibility issue. Ubuntu
9.10 is probably a good choice: I've had good success with the ATI
Radeion 9200 series of cards, but tastes vary.

> Secondly, I need to be able to work with a demanding windows-only
> program that needs powerful 3D graphics (I'd also like to run some
> windows-only games, but that's a bonus) - I don't think Wine will be
> suitable.  I'd like to avoid dual-boot, so that I can avoid using
> Windows for other purposes.  That means virtualisation.
>
> The three options I am looking at here are Virtual Box, Xen, and KVM.  I
> am familiar with Virtual Box (with both Windows and Linux hosts and
> guests), and find it very easy to work with, but 3D support is a bit
> limited.  Can a Windows machine running under Xen or KVM get more direct
> access to graphics hardware?  And if so, how does that play along with
> the Linux host?  And are there differences depending on the graphics
> card, or will any supported card work the same?

In general, no. The graphics are emulated, and Xen and KVM and VMWare
displays and other emulation displays are basically VNC: they're
network based, running inside a very limited graphical emulation
environment.

> Any thoughts or experiences would be appreciated.
>
> David

Turn your problem around. Install your desired Windows operating
system as the host OS, and run Linux inside emulation. Since you're
unlikely to requite so much graphics for the Linux environment, and
what you need can be done via X or VNC from the emulated system, I
think you'll be able to do what you need in Windows natively far more
easily than the way you're proposing. And if all you need is 32-bit
Linux, you can even run that for free with Microsoft Virtual PC. (I'm
using that right now on a Vista 64-bit desktop that I play games on.)
From: Aragorn on
On Friday 22 January 2010 15:08 in comp.os.linux.setup, somebody
identifying as David Brown wrote...

> I'm planning on putting together a new workstation, and would like to
> here some opinions on graphics cards. It will be a reasonably
> powerful machine (i7-860, most likely), and I'd like a fairly powerful
> graphics card to go with it (though I'm not aiming for extremes here).
> Support for two screens is a priority.
>
> My first question is, am I correct in thinking Nvidia is the best
> choice for Linux driver support these days?

That's in the eye of the beholder. Personally, I would say "yes", but
as soon as I do that, the FSF and the Radeon/Intel fans are going to
jump all over my post. :p

Yes, we know that AMD/ATi are now releasing Catalyst drivers which "sort
of" work, and we know that Intel releases its drivers as FOSS, but in
my humble opinion, nVidia drivers are still the best, even if they
*are* binary-only blobs.

(Mind you, I'm not criticizing AMD/ATi video adapters themselves, but a
good video adapter with a poor driver is not going to be satisfactory.
nVidia have great video cards, and probably the best quality of
drivers, so if you don't have any political objections to binary blobs,
then my advice would be to go with nVidia.)

> I am pragmatic about binary drivers - I'd prefer open source drivers
> if they work well enough, but I can live with binary graphics drivers
> if they are solid, work with a reasonable range of distributions
> (mainly Ubuntu 9.10 64-bit, but I want to try out several others while
> the machine is new).

nVidia then. :-)

> Secondly, I need to be able to work with a demanding windows-only
> program that needs powerful 3D graphics (I'd also like to run some
> windows-only games, but that's a bonus) - I don't think Wine will be
> suitable. I'd like to avoid dual-boot, so that I can avoid using
> Windows for other purposes. That means virtualisation.
>
> The three options I am looking at here are Virtual Box, Xen, and KVM.
> I am familiar with Virtual Box (with both Windows and Linux hosts and
> guests), and find it very easy to work with, but 3D support is a bit
> limited. Can a Windows machine running under Xen or KVM get more
> direct access to graphics hardware?

Yes and no... In a Xen set-up, the Xen privileged guest - also known
as "dom0" - controls all the hardware. Video output to a
paravirtualized guest is routed through a virtual framebuffer, which
makes it slow for 3D stuff. There are however solutions - I don't have
the links anymore, but you should be able to Google for it - for having
any paravirtualized guest connect to the accelerated video driver on
the X server in dom0 via VNC.

Windows is of course the bad player here, because it cannot be
paravirtualized. This means that Windows can only be made to run
inside an unprivileged guest on Xen if the hardware has virtualization
extensions. In that case, Windows will get to see a limited S3 video
adapter, which is emulated via the Qemu code in Xen. Not quite ideal
either.

What you *could* do - remember our dialog in the other thread? - is
install two videocards and hide one of them from dom0. That way, the
Windows guest can use a native driver to directly access the second
video card. It is however advised then to also use an additional
keyboard and mouse, dedicated to that virtual machine and driven by
that virtual machine, because Xen makes use of a virtual keyboard for
direct access to the unprivileged virtual machines, but you can only
enable this if you also enable the virtual framebuffer, and with the
virtual framebuffer enabled, the guest operating system will tend to
use that for primary video output instead of the available physical
video adapter.

I have no experience with KVM, but it works in a similar way to Xen with
regard to PCI pass-through, albeit at present still with more
limitations. You also have to keep in mind that KVM requires Qemu -
originally a modified version of Qemu, but now it also supports the
standard Qemu - and that it thus runs on top of a host operating
system, which makes it less evident to isolate resources to the guest
operating system.

Now, I have read another approach to the video thing, but this requires
some fiddling. Again I have no links, but I have found out about this
through the Xen Wiki, I think. In this scenario, you have only one
video adapter, but it is a PCIe adapter, and PCIe supports hotplugging.
That means that you can tell the host operating system (or privileged
guest in a Xen context) that you are "unplugging" the device, which
makes it available for direct access by the unprivileged guest. This
*should* also work for KVM, because KVM supports hotplug events.

> And if so, how does that play along with the Linux host? And are
> there differences depending on the graphics card, or will any
> supported card work the same?

Well, for the simulated hotplug scenario, you need a PCIe video card - I
don't think an AGP card would work. The rest is pretty much generic to
all video adapters, but bear in mind what I told you higher up about
running Windows in a Xen virtual machine, i.e. without a dedicated
video adapter for Windows or a simulated hot-unplug scenario in the
privileged guest, the Windows guest will only get to see a low-spec
emulated S3 video adapter, emulated via the Qemu code in Xen.

Considering that KVM requires Qemu, this would be the same there as
well, I think.

3D acceleration in a virtual machine context is still a difficult issue,
whether the guest is GNU/Linux, Windows, (Open)Solaris or *BSD, and
regardless of the virtualization solution. Hardware virtualization
extensions offer PCI throughput via the IOMMU, but not all of the
software supports that yet, and so complicated set-ups are needed in
order to get 3D acceleration working in the guest.

--
*Aragorn*
(registered GNU/Linux user #223157)
From: David Brown on
On 22/01/2010 15:56, Nico Kadel-Garcia wrote:
> On Jan 22, 9:08 am, David Brown<da...(a)westcontrol.removethisbit.com>
> wrote:
>> I'm planning on putting together a new workstation, and would like to
>> here some opinions on graphics cards. It will be a reasonably powerful
>> machine (i7-860, most likely), and I'd like a fairly powerful graphics
>> card to go with it (though I'm not aiming for extremes here). Support
>> for two screens is a priority.
>
> Go to www.tomshardware.com for basic recommendations, and
> http://www.linux-drivers.org/ to hunt for driver compatibility.
>

www.linux-drivers.org didn't seem to have too much information in
itself, just links to other sites.

Ideally, I'm looking more for personal opinions - what works in
practice? I can always find Linux drivers for pretty much any card, but
that doesn't mean that they will be /good/ drivers that run the cards
efficiently.

>> My first question is, am I correct in thinking Nvidia is the best choice
>> for Linux driver support these days? I am pragmatic about binary
>> drivers - I'd prefer open source drivers if they work well enough, but I
>> can live with binary graphics drivers if they are solid, work with a
>> reasonable range of distributions (mainly Ubuntu 9.10 64-bit, but I want
>> to try out several others while the machine is new).
>
> NVidia remains a problem. While many folks find it useful, NVidia's
> insistence on proprietary OpenGL drivers to take full advantage of
> their card's features remains a serious compatibility issue. Ubuntu
> 9.10 is probably a good choice: I've had good success with the ATI
> Radeion 9200 series of cards, but tastes vary.
>

I know it's a disadvantage having binary drivers. But we live in an
imperfect world, and I'd rather have good binary drivers than poor open
source drivers. If the difference is small, then of course I'll pick
the open source drivers.

I have /heard/ that with a modern Nvidia card, the open source drivers
are still very limited, while the binary drivers are very good. On the
other hand, for modern ATI cards, both the open source drivers and the
binary drivers are sort of middle-of-the-road. Thus for open source
only, ATI is the best choice - when you are willing to use binary
drivers, Nvidia comes out best. Do you think that is a reasonable
summary, or have I been reading the wrong web sites?

>> Secondly, I need to be able to work with a demanding windows-only
>> program that needs powerful 3D graphics (I'd also like to run some
>> windows-only games, but that's a bonus) - I don't think Wine will be
>> suitable. I'd like to avoid dual-boot, so that I can avoid using
>> Windows for other purposes. That means virtualisation.
>>
>> The three options I am looking at here are Virtual Box, Xen, and KVM. I
>> am familiar with Virtual Box (with both Windows and Linux hosts and
>> guests), and find it very easy to work with, but 3D support is a bit
>> limited. Can a Windows machine running under Xen or KVM get more direct
>> access to graphics hardware? And if so, how does that play along with
>> the Linux host? And are there differences depending on the graphics
>> card, or will any supported card work the same?
>
> In general, no. The graphics are emulated, and Xen and KVM and VMWare
> displays and other emulation displays are basically VNC: they're
> network based, running inside a very limited graphical emulation
> environment.
>

Thanks, that's useful information. I knew that you /could/ use VNC (or
something similar) for the guest displays, I just didn't know if that
was the only choice. Virtual Box is probably a better choice in that
case - the guest may not get native speed for 3D, but it is much better
than over VNC.

>> Any thoughts or experiences would be appreciated.
>>
>> David
>
> Turn your problem around. Install your desired Windows operating
> system as the host OS, and run Linux inside emulation. Since you're
> unlikely to requite so much graphics for the Linux environment, and
> what you need can be done via X or VNC from the emulated system, I
> think you'll be able to do what you need in Windows natively far more
> easily than the way you're proposing. And if all you need is 32-bit
> Linux, you can even run that for free with Microsoft Virtual PC. (I'm
> using that right now on a Vista 64-bit desktop that I play games on.)

That's certainly a consideration - it's a combination I use already on
other systems (such as the one I'm typing on at the moment), although I
use Virtual Box rather than MS's Virtual PC. But I'm aiming to have
Linux as the host if I can - you want the safest and most flexible
system on the host, not the guests.

Thanks,

David
From: David Brown on
On 22/01/2010 15:57, Aragorn wrote:
> On Friday 22 January 2010 15:08 in comp.os.linux.setup, somebody
> identifying as David Brown wrote...
>
>> I'm planning on putting together a new workstation, and would like to
>> here some opinions on graphics cards. It will be a reasonably
>> powerful machine (i7-860, most likely), and I'd like a fairly powerful
>> graphics card to go with it (though I'm not aiming for extremes here).
>> Support for two screens is a priority.
>>
>> My first question is, am I correct in thinking Nvidia is the best
>> choice for Linux driver support these days?
>
> That's in the eye of the beholder. Personally, I would say "yes", but
> as soon as I do that, the FSF and the Radeon/Intel fans are going to
> jump all over my post. :p
>

It's the opinions of the beholder that I'm looking for, so your "yes" is
a helpful answer. And if people argue with you, I'll learn more - so
that's okay too.

> Yes, we know that AMD/ATi are now releasing Catalyst drivers which "sort
> of" work, and we know that Intel releases its drivers as FOSS, but in
> my humble opinion, nVidia drivers are still the best, even if they
> *are* binary-only blobs.
>
> (Mind you, I'm not criticizing AMD/ATi video adapters themselves, but a
> good video adapter with a poor driver is not going to be satisfactory.
> nVidia have great video cards, and probably the best quality of
> drivers, so if you don't have any political objections to binary blobs,
> then my advice would be to go with nVidia.)
>

I /do/ have objections to binary drivers, but I'll accept them anyway -
it's good to have idealistic aims, but not to be fanatical about them.

>> I am pragmatic about binary drivers - I'd prefer open source drivers
>> if they work well enough, but I can live with binary graphics drivers
>> if they are solid, work with a reasonable range of distributions
>> (mainly Ubuntu 9.10 64-bit, but I want to try out several others while
>> the machine is new).
>
> nVidia then. :-)
>
>> Secondly, I need to be able to work with a demanding windows-only
>> program that needs powerful 3D graphics (I'd also like to run some
>> windows-only games, but that's a bonus) - I don't think Wine will be
>> suitable. I'd like to avoid dual-boot, so that I can avoid using
>> Windows for other purposes. That means virtualisation.
>>
>> The three options I am looking at here are Virtual Box, Xen, and KVM.
>> I am familiar with Virtual Box (with both Windows and Linux hosts and
>> guests), and find it very easy to work with, but 3D support is a bit
>> limited. Can a Windows machine running under Xen or KVM get more
>> direct access to graphics hardware?
>
> Yes and no... In a Xen set-up, the Xen privileged guest - also known
> as "dom0" - controls all the hardware. Video output to a
> paravirtualized guest is routed through a virtual framebuffer, which
> makes it slow for 3D stuff. There are however solutions - I don't have
> the links anymore, but you should be able to Google for it - for having
> any paravirtualized guest connect to the accelerated video driver on
> the X server in dom0 via VNC.
>

Passing through VNC is going to be even slower than a virtual
framebuffer, I would think. It is certainly sounding like Virtual Box
is the fastest choice for 3D in guests (note that this is Virtual Box
with the free-cost binary blobs, not the open source version - more
compromises).

> Windows is of course the bad player here, because it cannot be
> paravirtualized. This means that Windows can only be made to run
> inside an unprivileged guest on Xen if the hardware has virtualization
> extensions. In that case, Windows will get to see a limited S3 video
> adapter, which is emulated via the Qemu code in Xen. Not quite ideal
> either.
>
> What you *could* do - remember our dialog in the other thread? - is
> install two videocards and hide one of them from dom0. That way, the
> Windows guest can use a native driver to directly access the second
> video card. It is however advised then to also use an additional
> keyboard and mouse, dedicated to that virtual machine and driven by
> that virtual machine, because Xen makes use of a virtual keyboard for
> direct access to the unprivileged virtual machines, but you can only
> enable this if you also enable the virtual framebuffer, and with the
> virtual framebuffer enabled, the guest operating system will tend to
> use that for primary video output instead of the available physical
> video adapter.
>

That's not going to be a good solution for me - as well as costing for
the extra hardware, and taking up more space on the desk, it would lose
even more of the integration between the host and the guest.

> I have no experience with KVM, but it works in a similar way to Xen with
> regard to PCI pass-through, albeit at present still with more
> limitations. You also have to keep in mind that KVM requires Qemu -
> originally a modified version of Qemu, but now it also supports the
> standard Qemu - and that it thus runs on top of a host operating
> system, which makes it less evident to isolate resources to the guest
> operating system.
>

I'm not worried about the isolation between the host and the guest - any
virtualisation system is going to give pretty good protection of the
host from the guest's bad behaviour, and the guest is always at the
mercy of the host anyway.

> Now, I have read another approach to the video thing, but this requires
> some fiddling. Again I have no links, but I have found out about this
> through the Xen Wiki, I think. In this scenario, you have only one
> video adapter, but it is a PCIe adapter, and PCIe supports hotplugging.
> That means that you can tell the host operating system (or privileged
> guest in a Xen context) that you are "unplugging" the device, which
> makes it available for direct access by the unprivileged guest. This
> *should* also work for KVM, because KVM supports hotplug events.
>

That's an interesting idea - I'll read up about that. Of course, a
windows machine is going to have a fit if it suddenly finds itself
without any working video card.

>> And if so, how does that play along with the Linux host? And are
>> there differences depending on the graphics card, or will any
>> supported card work the same?
>
> Well, for the simulated hotplug scenario, you need a PCIe video card - I
> don't think an AGP card would work. The rest is pretty much generic to
> all video adapters, but bear in mind what I told you higher up about
> running Windows in a Xen virtual machine, i.e. without a dedicated
> video adapter for Windows or a simulated hot-unplug scenario in the
> privileged guest, the Windows guest will only get to see a low-spec
> emulated S3 video adapter, emulated via the Qemu code in Xen.
>
> Considering that KVM requires Qemu, this would be the same there as
> well, I think.
>
> 3D acceleration in a virtual machine context is still a difficult issue,
> whether the guest is GNU/Linux, Windows, (Open)Solaris or *BSD, and
> regardless of the virtualization solution. Hardware virtualization
> extensions offer PCI throughput via the IOMMU, but not all of the
> software supports that yet, and so complicated set-ups are needed in
> order to get 3D acceleration working in the guest.
>