1. Overview
    1. Each machine type family includes different machine types
    2. Each family is curated for specific workload types
    3. General-purpose machine types offer the best price-performance ratio for a variety of workloads
    4. Memory-optimized machine types are ideal for memory-intensive workloads because they offer higher memory per core than other machine types
    5. Compute-optimized machine types offer the highest performance per core on Compute Engine and are optimized for compute-intensive workloads
    6. Shared-core machine types are available in the N1 and E2 families
    7. Shared-core machine types timeshare a physical core, and are a cost-effective method for running small, non-resource intensive applications
  2. Networking
    1. Google Cloud does not artificially cap VM instance inbound or ingress traffic
    2. VMs are allowed to receive as much traffic as resources and network conditions allow
    3. For purposes of capacity planning, assume that each VM instance can handle no more than 10 Gbps of external Internet traffic
    4. This value is an approximation, is not covered by an SLA, and is subject to change.
    5. Adding Alias IP ranges or multiple network interfaces to a VM does not increase its ingress capacity
    6. The maximum egress rate depends on the machine type of the VM
    7. Egress traffic is the total outgoing bandwidth that is shared among all network interfaces of a VM, including data transfer to persistent disks that are connected to the VM
    8. Actual egress rates depend on many factors other than the maximum egress rate
    9. Using external IP addresses to communicate between VMs requires more overhead than using internal IP addresses
  3. General purpose
    1. General-purpose machine types offer the best price-performance ratio for a variety of workloads
    2. If not sure which machine type is best for a workload, using a general-purpose machine type is a good place to start
    3. N1 machine types are Compute Engine's first generation general-purpose machine types
    4. High-CPU machine types are ideal for tasks that require a moderate increase of vCPUs relative to memory
    5. N2 machine types are the second generation general-purpose machine types that offer flexible memory and CPU sizing
    6. These machine types also offer an overall performance improvement over N1 machine types
    7. Offers higher memory-to-core ratios for VMs created with the extended memory feature.
    8. Using the extended memory feature helps control per-CPU software licensing costs while providing access to more RAM
    9. N2 machine types do not support GPUs
    10. N2 machine types are only available in select zones and regions
    11. High-CPU machine types are ideal for tasks that require a moderate increase of vCPUs relative to memory
    12. E2 machine types are available on the following predefined CPU platforms: Intel Skylake, Broadwell, Haswell, and AMD EPYC processors
    13. Small to medium workloads that require at most 16 vCPUs but do not require local SSDs or GPUs are an ideal fit for E2 machines
    14. E2 machine types do not offer sustained-use discounts; however, they do provide consistently low on-demand and committed-use pricing
    15. Are available in predefined and custom machine types.
    16. Offers the lowest on-demand pricing across the general-purpose machine types.
    17. Powered by an Intel or AMD EPYC processor (selected at instance creation by Compute Engine based on availability).
    18. E2 machine types do have some limitations when compared with other general-purpose machine types
    19. No support for GPUs, local SSDs, sole-tenant nodes, or nested virtualization
    20. No sustained-use discounts
    21. No control over processor type
    22. E2 machine types are only available in select regions and zones
    23. E2 high-memory machine types have 8 GB of system memory per vCPU
    24. High-CPU machine types are ideal for tasks that require a moderate increase of vCPUs relative to memory
  4. Custom
    1. If none of the general-purpose predefined machine types match the needs, create a custom machine type with the number of vCPUs and amount of memory required
    2. Custom machine types are ideal for Workloads that are not a good fit for the predefined machine types
    3. Workloads that require more processing power or more memory, but don't need all of the upgrades that are provided by the next larger predefined machine type
    4. It costs slightly more to use a custom machine type than an equivalent predefined machine type, and there are still some limitations in the amount of memory and vCPUs that can be selected
  5. Memory optimized
    1. Memory-optimized machine types are ideal for tasks that require intensive use of memory with higher memory-to-vCPU ratios than the N1 high-memory machine types
    2. These machine types are suited for in-memory databases and in-memory analytics, such as SAP HANA and business warehousing (BW) workloads, genomics analysis, SQL analysis services, etc
    3. Memory-optimized machine types are only available as predefined machine types
    4. You cannot use regional persistent disks with memory-optimized machine types
    5. Memory-optimized machine types are only available in specific zones
    6. M1 machine types are the first generation memory-optimized machine types
    7. M2 ultramem machine types offer on-demand pricing for an evaluation period only
    8. Long running usage requires purchasing a committed use contract
  6. Compute optimized
    1. Compute-optimized machine types are ideal for compute-intensive workloads
    2. These machine types offer the highest performance per core on Compute Engine
    3. Compute-optimized types are only available as predefined machine types and include the C2 machine types
    4. C2 machine types offer much more computing power, run on a newer platform, and are generally more robust for compute-intensive workloads than the N1 high-CPU machine types
    5. Regional persistent disks cannot be used with compute-optimized machine types
    6. C2 machine types are subject to different disk limits than general-purpose and memory-optimized machine types
    7. C2 machine types are only available in select zones and regions
    8. C2 machine types are only available on select CPU platforms
  7. Shared core
    1. Shared-core machine types use Hyper-threading to split a virtual core for the purpose of multitasking
    2. N1 shared core machine types have up to one vCPU available for short periods of bursting
    3. E2 shared-core machine types have two vCPUs available for short periods of bursting
    4. Shared-core instances can be more cost-effective for running small, non-resource intensive applications than standard, high-memory or high-CPU machine types
    5. Shared-core machine types offer bursting capabilities that allow instances to use additional physical CPU for short periods of time
    6. Bursting happens automatically when an instance requires more physical CPU than originally allocated
    7. During these spikes, the instance will opportunistically take advantage of available physical CPU in bursts
    8. Note that bursts are not permanent and are only possible periodically.
    9. Bursting doesn't incur any additional charges
    10. Charges are based on the listed on-demand price for f1-micro, g1-small, and e2 shared-core machine types
    11. These machine types are burstable up to 1 vCPU for short periods of time
    12. E2 shared-core machines are cost-effective, and are ideal for small workloads
    13. E2 shared-core machine types expose two vCPUs to the guest operating system
    14. These machine types are burstable up to 2 vCPUs for short periods of time
  8. GPU
    1. Compute Engine provides graphics processing units (GPUs) for virtual machine instances
    2. Use GPUs to accelerate specific workloads on instances such as machine learning and data processing
    3. GPU instances cannot live migrate and must terminate for host maintenance events
    4. These maintenance events typically occur once each month
    5. Maintenance events can also occur more frequently when necessary
    6. GPUs can only be attached to instances with predefined or custom machine types
    7. GPUs are not supported on shared-core or memory-optimized machine types
    8. Instances with lower numbers of GPUs are limited to a maximum number of vCPUs
    9. In general, a higher number of GPUs allows users to create instances with a higher number of vCPUs and memory
    10. GPU devices receive sustained use discounts similar to vCPUs
    11. Higher network bandwidths can improve the performance of distributed workloads
    12. On Compute Engine, network bandwidth is dependent on machine type and the number of CPUs
    13. For VM instances that have attached GPUs, the configuration of GPU count, CPU, and memory impacts the network bandwidth as well
    14. Can attach GPUs only to general-purpose N1 machine types.
    15. GPUs are not supported for other machine types
    16. Instances with lower numbers of GPUs are limited to a maximum number of vCPUs
    17. In general, a higher number of GPUs allows users to create instances with a higher number of vCPUs and memory
  9. CPU
    1. When a VM instance is started on Compute Engine, the instance uses one of the CPU platforms available on Compute Engine
    2. If a CPU platform is not specified, the instance uses the default platform for the zone where the instance will run
    3. Each CPU platform is available only for specific machine types
    4. On Compute Engine, each virtual CPU (vCPU) is implemented as a single hardware hyper-thread on one of the available CPU platforms
    5. On Intel Xeon processors, Intel Hyper-Threading Technology supports multiple app threads running on each physical processor core
    6. Compute Engine virtual machine instances can be configured with one or more of hyper-threads as vCPUs
    7. The machine type specifies the number of vCPUs that an instance has