Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I need to do testing on clean machines frequently so I need some kind of virtual machine emulator which can load and run clean OS images.
Do you know any recommended freeware or low cost emulator?
I have been using VirtualBox for a while - http://www.virtualbox.org/ - and it works a treat
Everyone seems to be suggesting VirtualBox but, in my opinion, you can't beat VMWare at the virtualization game.
I would get a copy of VMWare Player (it's free for non-commercial use and you'd be hard pressed to find one cheaper than that), then use this web site here to create yourself a virtual machine to whatever specification you need.
I run heaps of images under XP (and one XP image under Debian) and it really is easy to set up. Early editions of the Linux VMWare required you to re-configure the software whenever the kernel changed but this is now an automatic process.
Free emulator for Linux:
QEmu and KVM
http://www.qemu.org/
Best I have used.
We're using Xen paravirtualization, and it's working very well. It's the same technology used by Amazon's Elastic Compute Cloud (EC2) to run your virtual machine images on their physical hosts. It only costs you 0.5-3.0% of your CPU cycles too.
What exactly are your needs?
I would try Vagrant which uses VirtualBox. It makes it really easy and quick to create and destroy boxes as you need them.
I've found it to be really amazing for getting a new clean development environment up and running. Once you get it going it makes switching, testing, creating, sharing and trashing development environments real easy.
VirtualBox
VirtualBox
VirtualBox is a powerful x86
virtualization product for enterprise
as well as home use. Not only is
VirtualBox an extremely feature rich,
high performance product for
enterprise customers, it is also the
only professional solution that is
freely available as Open Source
Software under the terms of the GNU
General Public License (GPL).
VirtualBox is also a good alternative.
I realize this has been well-answered already, but I'd like to add a couple of notes about VirtualBox: (1) In my experience, it is much faster than VMware when running as a Linux host, and (2) the snapshot features have been greatly improved in recent versions (the comprehensive snapshot functionality is what kept me in VMware for a long time.)
VirtualBox is a great virtual machine solution.
I'm a big fan of VirtualBox as well. The OSE is free and runs really well.
VMWare is nice because it's incredibly robust, especially the server edition. With the server edition, you can run all off your VM's of one machine and access them at any time by browsing to VMWare's web GUI. This is a nice feature that I've used time and time again.
I would say that if you're doing just testing/playing around, I'd go with VirtualBox over VMWare.
Related
I'd like to know if there's a way to learn the number of physical CPU-s of a host computer when my code is running inside a VM.
I'm looking for C++/assembly solutions that run in Windows and under VmWare (workstation/esxi) and HyperV. Sorry for the very vague question but after several searches, I'm not sure if this is possible to do inside the virtual machine.
The very concept of VM is that your code (even your OS) do not know that they are sharing resources.
So in first intance, no. The only possible workaround would be if the VM provided it explicity (I am thinking of VMWare Tools, yet I do not know if they offer an API for you).
I am researching ideas for a PhD project.
One of my thoughts is writing a hypervisor (or bare metal) (?) so I could run multiple OS's without use of a true host operating system. Example I get a menu of some type of options to start operating systems, view what the 'console' of what is going on in an OS that is already running. Reboot OS's, install a new one, etc.
So no host OS, just a small app that controls everything.
Conceptually how does one think about doing this?
I have a MacBook. I should be able to modify what the EFI boots. Maybe start with a very minimal Linux LIve implementation and scale it really, really far back?
Is it possible to use Darwin and scale it very far back?
Your idea as stated is not an original contribution to the science.
My advice is to review Xen and the general hypervisor literature, dating back to the '60s &
'70s when IBM invented it.
I'm certain there is room for improvement and original ideas there.
In terms of actually writing a hypervisor, you should review Wikipedia first, as it gives a good brief on virtualization.
Here is a historical summary, including some seminal citations: http://www.kernelthread.com/publications/virtualization/. Note the first citation is from 1959!
Scaling back an existing desktop/server OS seems like a poor choice. OTOH, rather than redo everything, it may be useful to start with an embedded RTOS such as ecos or L4 to draw some features from. Additionally, some code could possibly be re-used from QEMU.
If I were doing it, I would focus on hardware virtualization using VT-x and AMD-V ignore dynamic recompilation (unless was to be the focus of your work).
Also, it seems to me that it would be a good idea to already be able to write operating systems enough to make some small test operating systems that can boot on bare hardware to use for testing the hypervisor under development.
BTW, if scaling back an existing OS was a good strategy, I think it would work best on Linux or one of the major BSDs. Using Darwin is likely asking for pain.
Scaling back an existing OS to develop a hypervisor seems an unlikely approach.
Definitely have a look at some of the existing open source hypervisor project out there.
If you are interesting in reading about how they work and how you might approach writing
one then you could try:
Virtual Machines by Smith & Mair.
The Definitive Guide to the Xen Hypervisor by Chisnall.
If you are going to write it from scratch, and you are targeting the x86 family of processors then you are going to have to get your hands dirty with virtualization instructions (eg. Intel VT-x). And this will be with pure assembly language, or at best inline assembly. You are talking real low level stuff here.
If you are interested in computer communication and hypervisiors what about cross OS communication [it would be cheaper than trying to connect via normal TCP/IP sockets.
ESX is essentially a scaled-back Linux install - with a host of other goodies added: so your basic premise is decent.
However, for a PhD project, it sounds too broad: you should focus on something smaller.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm looking to buy a personal machine for development and I'm deciding whether to go with a Mac or a PC (on which I'd run Ubuntu). My plans for the next year or so involve getting more heavily into C/C++ and networking than I currently am. Are there any differences I should be aware of between the two OSes as far as C/C++ system libraries and such go?
If you have a lot of excess cash laying around, get the mac with the option to run Ubuntu in a VM. Otherwise a pc gives just about as much flexibility. As far as the actual development environment, both are going to be similarly good, but Ubuntu might be just a bit more developer friendly: apt certainly does make it easy to get additional libraries, etc. It might also depend on what IDE or tool chain you want to use.
Get a mac and run ubuntu in VMware or Virtual Box.
This is what I do and it works a treat.
You can even have 32bit and 64bit ubuntu. -- I've recently had issues that only shows up on 32bit or 64bit compilers.
A Mac is an excellent option - many have already mentioned the ability to dual boot or run a Linux VM. Remember also that the Mac has its roots in UNIX under the hood, so you get lots of *nix goodies for free right out of the box. A number of my colleagues have purchased Macs intending to run another OS in a VM, and are later pleasantly surprised to find that OS X does what they need it to do.
It sounds like you are interested enough in Macs and technically minded enough to consider using Linux. In that case, I would recommend building your own Macintosh and dual-booting OS X with Ubuntu.
This gives you several advantages:
Choose your own hardware at a favourable price/performance ratio
Get access to things that real Macs do not, like PCI slots and serial/parrallel ports
Ability to run things like more than 2 monitors, multiple hard disks, maybe BluRay drives or SSDs
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I’m a C# and Java serverside windows programmer by day and want to learn C++ on Unix in my spare time.
I have very limited knowledge of C++ (from my university days).
I currently own a dell laptop running Vista. Should I create a dual boot system or buy a new machine?
Which Unix OS should I go for?
Which IDE should I use? …. NetBeans looks ok?
Which books should I read? I’m interested in texts covering the fundamentals, libraries, network programming, distributed systems.
Thanks
Books advice:
Advanced Programming in the Unix Environment, by Stephens and Rago.
Accelerated C++, by Koenig and Moo
IDE: my favorite choice would be Eclipse, which has a c++ plugin (and many more interesting plugins), but I would also advice you to learn to use at least one among the Sacred Monsters: VI/VIM and Emacs.
OS: I would go for a dual boot system with some linux distro, maybe Ubuntu.
I think you could go for Dual boot as klez pointed out.
I have a HP2000z dual boot with XP and Ubuntu, and i really like Ubuntu a lot!
For C++, you could give Code::Blocks a try. Its open source.
Adding to orsogufo, I also suggest Unix Network programming Vol I and Vol II by Richard Stevens for Network related topics.
STEPS:
Download free c++ books,
Thinking in c++ volume 1.
Thinking in c++ volume 2.
Learn some IDE's,
QT creator.
Netbeans.
Eclipse.
Learn how to use a debugger ( Most important ) eg: gdb
You can either use Ubuntu or Fedora Linux
All the best!
Dual boot is OK.
As of wich UNIX to choose I'll go for linux, in particular Debian or Fedora.
As IDE you could choose between Netbeans, Eclipse or, if you're going to use KDE as desktop enviroment, go for KDevelop.
Books, there's plenty of free books available. Just google it. I would advice C++ for Dummies (no offence intended ;-) )
Go for a dual boot, or if you have a good enough PC, try using a virtual machine (virtualbox is a decent one). If your new to *nix, Ubuntu is great, or if you dont mind getting your hands dirty try Gentoo.
As for an IDE, so far I have been happy using Vim and the command line in *nix.
In my opinion you should start with a virtual machine (Virtual Box is free and works well).
It's not that installing Unix/Linux is extremely complicated, but you'll probably have to resize one or more partitions, which is quite scary the first time.
Installing in a VM is easy, and you won't have to worry about breaking something.
If you realize you don't like Unix, you just drop the VM.
As of which Unixoid to install, I'd say grab a widely known Linux distribution so you can get help easily.
If you know someone who is proficient with Unix and can help you, install the same distro as him.
Otherwise, you can probably install any widely used distro.
I just want to warn you that many people find Ubuntu unstable after the first upgrade. ;-)
About Unix and IDEs, this answer sums it up well: C++ IDE for Linux?.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm looking for a profiler to use with native C++. It certainly does not have to be free, however cost does factor into the purchase decision. This is for commercial work so I can't use personal or academic licensed copies.
The key features I'm looking for are:
Process level metrics
Component level metrics
Line-level metrics
Supports Multi-threaded code
Usability
Cost
Visual Studio 2005 Professional support required (VS 2008 Professional support highly
desirable)
I've used Intel's VTune and Compuware's Devpartner Performance Analysis Community Edition.
VTune seemed very powerful but it has a steep learning curve. It also is very "modular" so you have to figure out what parts are you need to buy.
DevPartner PACE was pretty easy to use and provides all of the key features however it's only a 45-day trial. The licensed version (DevPartner for Visual C++ BoundsChecker Suite) is about $1400 a seat, which is doable but a bit high imo.
What are some good profilers for native C++ and WHY?
See also:
What's Your Favorite Profiling Tool For C++
On Windows, GlowCode is affordable, fairly easy to use, and offers a free trial so you can see if it works for you.
Try Intel Parallel Studio. Currently, it's in beta, but the name Intel says it all.
http://www.intel.com/go/parallel
Many people are not aware but MSFT is making a great progress putting the best possible tools for improving performance in the hands of devlopers for free :-). They are exposing to all of us the internals of Windows tracing: ETW.
perftools
It is part of the new windows SDK for server 2008 and Vista. Simply impressive and must to download if performance analysis and profiling under Windows is your goal (regardless of language).
Check the documentation here before you decide to download it:
msdn doc
Just found Luke StackWalker on SourceForge (http://lukestackwalker.sourceforge.net/).
Unfortunately it does not have a 'focus on sub tree', but it remains handy to use, uses the symbol server (I suggest you set it up immediately if you don't have it yet), offers a graphical visualisation, ...
The down side is that it doesn't show the accumulated times (samples) of the child functions.
Another alternative is "Very Sleepy" (http://www.codersnotes.com/sleepy). It can show the accumulated times of the children, but unfortunately it doesn't use the symbol server.
CodeXL may also be worth looking at, it can run on both Linux and Windows, although it is mainly dedicated to OpenGL/OpenCL debugging and profiling there is a time based sample option for CPUs under the profiling section which maybe helpful. It's also free and works as long as pdb files are available (well on windows, I don't know how it works on Linux) (even for release builds with pdb).
Definitely Visual Studio Team System. By far.
I just finished the first usable version of CxxProf, a portable manual instrumented profiling library for C++.
It fulfills your requirements:
Profiles multithreaded applications
Support for profiling multiple processes throughout the same network is on the way
It is written with the best usability and easiest integration in mind
It's free as in beer and free as in speech
It will work with VS05,08,10,12 and 13. As well as with g++ on Linux. It's currently tested with VS 2013 Express.
See the project wiki for more info.
Disclaimer: Im the main developer of CxxProf
I wrote an open source lightweight win32/64 profiler, support both CPU and memory profiling,
it's kind of similar with VS profiler, but with unique feature like flame graph of CPU and
memory data. it's here: dprofiler