def get_totals(cpuinfo):
    """Compute totals:
       - real: physical CPUs
       - cores: cores x physical CPU
       - total: logical CPUs real*cores*siblings
    Note: Siblings are only counted if Hyperthreading is enabled
    """
    # We assume same CPU architecture for multi CPU systems
    real     = len({cpuinfo[k]['physical_id'] for k in cpuinfo.keys()})
    cores    = int(cpuinfo['0']['cpu_cores'])
    total    = real*cores

    # Hyperthreading support (added for completeness)
    siblings = int(cpuinfo['0']['siblings'])
    if cores != siblings:
        cpuinfo['siblings'] = siblings
        total *= siblings
    return real, cores, total