Virtualization creates logical representations of physical computing resources. For compute, a hypervisor allocates processor time, memory, and device access to virtual machines, each of which runs its own guest operating system. Multiple virtual machines can share a physical server while remaining logically isolated. Virtualization also applies to storage and networking, where logical volumes and networks hide details of the underlying infrastructure.
Cloud providers use virtualization to provision resources without assigning an entire physical server to every customer. Engineers select virtual machine configurations and operating system images rather than installing hardware. The provider operates the physical infrastructure and virtualization layer, while customers typically remain responsible for guest operating system updates, application configuration, and workload security. Virtualization provides an isolation boundary, but it does not replace identity controls, network restrictions, encryption, or patching.
For cost-optimized compute, distinguish an instance family from an instance size. A family determines the general resource profile: compute-optimized instances emphasize processor capacity, memory-optimized instances provide more memory relative to compute, and general-purpose instances offer a balanced configuration. Size determines the allocated capacity within that profile. A memory-bound application can waste money on a large compute-optimized instance if the extra processors remain idle. A smaller memory-optimized instance might satisfy the same workload at lower cost, depending on pricing and measured performance.
For example, a compilation worker with sustained processor demand may fit a compute-optimized virtual machine, whereas an in-memory analytics engine may need a memory-optimized configuration. A lightly used administrative server may fit a burstable instance, but sustained utilization can exhaust CPU credits or incur additional charges under applicable configurations. Evaluate CPU utilization, memory pressure, storage latency, network throughput, and application response times before resizing. The cheapest hourly rate is not necessarily the lowest cost per completed job.
Virtualization technology and processor architecture also affect compatibility. On Amazon EC2, HVM, or hardware virtual machine, is the virtualization type used by modern instance types; paravirtual, or PV, images are associated with older configurations and have restricted compatibility. Many current EC2 instances use the Nitro System, which offloads infrastructure functions to dedicated hardware and uses a lightweight hypervisor for virtualized instances. An image must match the target architecture, such as x86-64 or Arm64, and support the required boot and device interfaces. Hardware-assisted virtualization does not automatically translate applications between processor architectures.
A virtual CPU is not universally equivalent to a dedicated physical core. On many simultaneous-multithreading configurations, it represents a hardware thread; mappings differ across processor architectures and instance types. Performance also depends on processor generation, memory bandwidth, storage limits, and network limits. Virtualization can introduce overhead, although hardware assistance and infrastructure offloading can reduce it substantially. Shared infrastructure can create resource contention, so benchmark representative workloads rather than assuming identical virtual resource counts imply identical performance.
Virtual machines are not the same as containers: containers usually share a host operating system kernel, while virtual machines have separate guest kernels. Dedicated tenancy can address placement or licensing requirements without necessarily removing virtualization; bare-metal instances are a separate option. Finally, virtualization alone does not provide automatic scaling, backups, or high availability. Those outcomes require additional services and architecture, such as distributing instances across failure domains and replacing failed instances from tested images.