АВТОМАТИЗИРОВАННОЕ ПРОФИЛИРОВАНИЕ ИСПОЛЬЗОВАНИЯ РЕСУРСА
AUTOMATED RESOURCE USAGE PROFILING

УРОВЕНЬ ТЕХНИКИ
[0001] Известные вычислительные устройства используют коммуникационную сеть или последовательность коммуникационных сетей для обмена данными. Компании и организации управляют сетями ЭВМ, которые связывают ряд вычислительных устройств для поддержки операций или оказывают услуги третьим лицам. Вычислительные системы могут быть расположены в одном географическом местоположении или расположены во множестве различных географических местоположений (например, связаны посредством частных или общедоступных коммуникационных сетей). В частности, центры обработки данных или дата-центры, в настоящей заявке в целом называемые как "центры обработки данных", могут включать достаточное количество связанных вычислительных систем для предоставления вычислительных ресурсов пользователям центра обработки данных. Центры обработки данных могут представлять собой центры конфиденциальных данных, которыми управляют от имени организации, или общедоступные центры обработки данных, которыми управляют от имени или в пользу широкого круга лиц.
[0002] Для облегчения повышенного использования ресурсов центра обработки данных могут быть использованы виртуализационные технологии, которые могут обеспечить возможность размещения в одиночном физическом хост-компьютере одной или большего количества экземпляров конфигураций экземпляра виртуальной машины, которые образуются и действуют как независимые вычислительные устройства для пользователей центра обработки данных. С использованием виртуализации одиночный физический хост-компьютер может создавать, поддерживать, удалять экземпляры виртуальной машины или иным образом управлять экземплярами виртуальной машины динамическим способом. В свою очередь, пользователи могут запрашивать одиночные вычислительные устройства или конфигурацию сетевых вычислительных устройств и получать изменяющиеся количества ресурсов виртуальной машины.
[0003] Вычислительные ресурсы, предоставленные хост-компьютерами, могут включать вычислительную производительность, пространство памяти и других хранилищ, полосу пропускания, и т.п.  В среде центра обработки данных с тысячами хост-компьютеров экземпляр виртуальной машины может быть скопирован в случайном хост-компьютере, пока целевой хост-компьютер удовлетворяет техническим условиям, таким как достаточные и доступные ресурсы вычислительного устройства (например, процессоры, запоминающие устройства, и т.п. ). После копирования экземпляра виртуальной машины в физическом хост-компьютере заданное количество одного или большего количества вычислительных ресурсов может быть зарезервировано для использования экземпляра виртуальной машины. Провайдер вычислительного ресурса или другой оператор среды центра обработки данных может гарантировать экземпляры виртуальной машины, доступ к зарезервированному количеству вычислительных ресурсов на целевом вычислительном устройстве.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0004] На всех чертежах ссылочные номера могут быть использованы многократно для указания соответствия между снабженными ссылочным номером элементами. Чертежи представлены для показа подходящих вариантов реализации, описанных в настоящей заявке, и не предназначены для ограничения объема описания.
[0005] На Фиг. 1 показана блок-схема иллюстративной сетевой вычислительной среды, включая компонент управления, множество хост-компьютеров и множество клиентов.
[0006] На Фиг. 2 показана блок-схема иллюстративного компонента управления, содержащего различные блоки и компоненты хранения.
[0007] На Фиг. 3 показана блок-схема иллюстративного способа автоматического профилирования использования вычислительного ресурса.
[0008] На Фиг. 4 показана блок-схема иллюстративного хост-компьютера, в котором размещены виртуальные машины, использующие вычислительные ресурсы, предоставленные вычислительным устройством.
[0009] На Фиг. 5 показана блок-схема иллюстративного способа, согласно которому запускают виртуальные машины в хост-компьютерах, распределяют и перераспределяют вычислительные ресурсы и переносят исполняемые в текущий момент виртуальные машины для дополнительной оптимизации использования вычислительных ресурсов.
[0010] На Фиг. 6 показана блок-схема иллюстративного хост-компьютера, в котором различные вычислительные ресурсы перераспределены, и избыточная производительность остается доступной.
[0011] На Фиг. 7 показана блок-схема иллюстративного хост-компьютера, в котором различные вычислительные ресурсы по существу перераспределены из-за минимального использования ресурса каждой виртуальной машины, исполняемой в хост-компьютере.
[0012] На Фиг. 8 показана блок-схема иллюстративного переноса виртуальной машины из одного хост-компьютера в другой хост-компьютер по причине повторного использования и недостаточности доступной производительности вычислительного ресурса.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0013] Описанное выше в общих чертах настоящее изобретение относится к использованию вычислительных ресурсов. В частности, настоящее изобретение относится к автоматическому определению использования ресурса и профилей эксплуатационных показателей для потребителей вычислительных ресурсов на основании анализа измерений фактического использования ресурсов и других эксплуатационных показателей. Согласно некоторым вариантам реализации потребитель вычислительных ресурсов, такой как экземпляр виртуальной машины, скопированный в соответствии со спецификациями клиента (например, экземпляр виртуальной машины, скопированный из образа виртуальной машины, оснащенный операционной системой и прикладной программой в соответствии со спецификациями клиента), может быть создан (инстанцирован) на физическом хост-компьютере. Экземпляр виртуальной машины может потреблять различные вычислительные ресурсы на основании необходимости исполнения одной или большего количества компьютерных программ или других рабочих нагрузок, созданных экземпляром виртуальной машины. Затем экземпляр виртуальной машины может завершить исполнение или может быть сконфигурирован иным способом для другой цели.
[0014] Для конкретных субъектов, таких как клиент или набор клиентов, процесс создания экземпляров виртуальной машины может быть повторен. В качестве части обработки жизненного цикла экземпляров виртуальной машины, поставщик услуг, связанный с обеспечением экземпляров виртуальной машины, может наблюдать и регистрировать потребление ресурсов. Затем поставщик услуг может определить профиль использования ресурсов экземпляров и эксплуатационных показателей виртуальной машины на основании измерений обработки потребления ресурсов и других данных, относящихся к эксплуатационному показателю.
[0015] Дополнительные аспекты настоящего изобретения относятся к обобщению профилей использования ресурсов и эксплуатационных показателей, в целом называемых эксплуатационными профилями. Например, тысячи или большее количество экземпляров виртуальных машин могут быть созданы и могут использовать ресурсы в вычислительной среде одиночной сети, такой как центр обработки данных. Вместо определения и поддерживания отдельных индивидуализированных эксплуатационных профилей для каждого экземпляра виртуальной машины, экземплярам виртуальной машины могут быть назначены обобщенные эксплуатационные профили или эксплуатационные профили по умолчанию. Соответственно, группы экземпляров виртуальной машины могут быть категоризированы в соответствии с множеством организационных критериев и назначены одному и тому же эксплуатационному профилю. В некоторых случаях эксплуатационные профили могут быть иерархическими таким образом, что конкретная конфигурация экземпляра виртуальной машины ассоциирована с конкретным эксплуатационным профилем, а также с более общим эксплуатационным профилем, который самостоятельно ассоциирован с множеством конфигураций экземпляра виртуальной машины. В указанной иерархии может иметься множество уровней с потенциальным количеством в несколько тысяч конфигураций экземпляра виртуальной машины, связанных с одиночным общим эксплуатационным профилем или небольшим количеством высокоуровневых эксплуатационных профилей, и увеличенным количеством более конкретных эксплуатационных профилей на каждом уровне в иерархии. На самом нижнем уровне иерархии может находиться конкретный эксплуатационный профиль, связанный с одиночной конфигурацией экземпляра виртуальной машины, используемой конкретным клиентом.
[0016] Дополнительные аспекты настоящего изобретения относятся к идентификации целевого хост-компьютера для обеспечения вычислительных ресурсов для экземпляров виртуальной машины на основании автоматически определенного эксплуатационного профиля. Согласно некоторым вариантам реализации конкретные физические хост-компьютеры могут быть сконфигурированы для обеспечения целевых вычислительных ресурсов для множества экземпляров виртуальной машины одновременно. Заранее заданная величина вычислительного ресурса может быть зарезервирована для использования одиночного экземпляра виртуальной машины. Если эксплуатационный профиль для экземпляра виртуальной машины указывает, что экземпляр виртуальной машины скорее всего не будет потреблять ресурсы вычислительного устройства, которые зарезервированы для этой копии, хост-компьютер может скопировать дополнительные экземпляры виртуальной машины. Дополнительные экземпляры виртуальной машины могут быть связаны с ресурсами хост-компьютера или иметь доступ к ним одновременно с ранее созданными экземплярами виртуальной машины. Кроме того, если любая из экземпляров виртуальной машины потребляет или иным способом ограничивает доступ к ресурсу таким образом, что потребление соответствует одному или большему количеству порогов или превышает эти пороги, указанные в эксплуатационном профиле для экземпляра виртуальной машины, одна или большее количество экземпляров виртуальной машины могут быть переданы другому хост-компьютеру. Например, может быть передан экземпляр виртуальной машины, связанный с потреблением, которое превышает порог, или могут быть переданы другие экземпляры виртуальной машины.
[0017] Некоторые вычислительные ресурсы необязательно предоставляются хост-компьютерами, а скорее являются ресурсами вне хоста. Например, топология сети может потребовать осуществления связи от одного хост-компьютера ко второму хост-компьютеру для создания одного или большего количества каналов (например, сетевых соединений между коммутаторами и другими сетевыми компонентами). Количество каналов может быть другим для связи с третьим хост-компьютером. Данные относительно трафика канала и количества каналов, которые будут поддерживаться при осуществлении такой связи между хост-компьютерами, могут быть зарегистрированы как измерение потребления ресурса или эксплуатационный показатель. Указанные данные могут быть использованы в будущем для определения того, на каком хост-компьютере лучше создать экземпляр виртуальной машины, который может связываться с другим хост-компьютером. Кроме того, потребление некоторых вычислительных ресурсов необязательно уменьшает величину ресурса, которая доступна для других экземпляров виртуальной машины или потребителей в целом. Например, функциональный признак, обеспеченный хост-компьютером, такой как конкретный набор команд, в целом может быть назван вычислительным ресурсом. Однако использование набора команд необязательно уменьшает доступность указанного набора команд для другого экземпляра виртуальной машины, приложения или другого потребителя.
[0018] Несмотря на то что аспекты вариантов реализации, описанные в настоящей заявке, сосредоточены с целью иллюстрации на соотношениях и взаимодействиях между компонентом управления, серверными вычислительными устройствами и виртуальными машинами, которые воплощены на серверных вычислительных устройствах от имени клиентов, специалисту понятно, что способы, описанные в настоящей заявке, могут быть применены к любому количеству аппаратных средств или процессов программы или приложений. Например, поскольку экземпляры виртуальной машины в настоящем описании в целом использованы в качестве демонстрационного потребителя вычислительного ресурса, они могут быть замещены другими программами или рабочими нагрузками, такими как прикладная программа, операционные системы, узлы сети хранения данных (SAN) и т.п.  Кроме того, поскольку вычислительные ресурсы, такие как запоминающее устройство, производительность центрального процессора и пропускная способность сети, использованы в качестве демонстрационных вычислительных ресурсов, они могут быть замещены другими вычислительными ресурсами, такими как трафик сетевого канала, время задержки, наборы команд процессора и т.п.  Кроме того, несмотря на то что различные аспекты настоящего изобретения описаны ниже со ссылкой на иллюстративные примеры и варианты реализации, специалисту понятно, что описанные варианты реализации и примеры не должны быть истолкованы как ограничение. Ниже описаны различные аспекты настоящего изобретения со ссылкой на некоторые примеры и варианты реализации, которые предназначены для объяснения, но не ограничения настоящего изобретения.
[0019] На Фиг. 1 показан пример сетевой вычислительной среды 100, в которой могут быть осуществлены автоматизированное профилирование использования ресурса и назначение ресурсов на основании полученных профилей. Эксплуатационные профили и назначение ресурсов могут быть осуществлены на основании предварительных измерений фактического использования ресурса и других эксплуатационных показателей, а также на прогнозе будущего использования ресурсов. Сетевая вычислительная среда 100 может содержать компонент 102 управления и любое количество физических хост-компьютеров 104a-104n, связанных линиями связи посредством сети 110. Один или большее количество клиентов 122 могут быть связаны с компонентами сетевой вычислительной среды 100 посредством сети 120.
[0020] Сетевые вычислительные среды 100, такие как показанная на Фиг. 1, могут быть реализованы в центрах обработки данных и других средах, в которых множество хост-компьютеров 104a-104n предоставляют вычислительные услуги и ресурсы внутренним или внешним клиентам 122. Как описано более подробно ниже, каждый клиент 122 может быть соединен с компонентом 102 управления или некоторым другим компонентом внутри сетевой вычислительной среды 100 для инициирования вычислительных процессов. Инициирование вычислительных процессов может включать в себя создание экземпляра виртуальной машины на хост-компьютере 104 или конфигурирование операционной среды и одного или большего количества программных приложений. Экземпляр виртуальной машины может действовать от имени пользователя, потребляя вычислительные ресурсы хост-компьютера 104, сети 110, и т.п.  Поскольку настоящее описание сосредоточено только с целью иллюстрации, на работе сетевой вычислительной среды 100, предоставляющей вычислительные услуги внешним или внутренним клиентам 122 с использованием виртуальных машин, системы и процессы, описанные в настоящей заявке, могут быть применены к любому варианту реализации сетевой вычислительной среды 100, включая вариант реализации без разделения объектов клиента 122 или без использования виртуальной машины.
[0021] Каждый хост-компьютер 104 может быть сервером, таким как одноплатный сервер (блейд-сервер). Дополнительно хост-компьютером 104 может быть среднеуровневое вычислительное устройство, основной компьютер, настольный компьютер или любое другое вычислительное устройство, сконфигурированное для одновременного предоставления вычислительных услуг и ресурсов множеству потребителей, таких как экземпляр виртуальной машины. В типичном варианте реализации хост-компьютер 104 может быть сконфигурирован для связи с другими хост-компьютерами 104, компонентом 102 управления или некоторым другим компонентом сетевой вычислительной среды 100 посредством сети 110.
[0022] Сетью 110 может быть локальная сеть (LAN), региональная сеть (WAN), некоторая другая сеть или комбинация вышеперечисленного. Кроме того, сетевая вычислительная среда 100 может быть соединена с другой сетью 120, такой как корпоративная сеть или университетская сеть, или группа сетей, которой управляют независимые объекты, такая как сеть Интернет. Клиенты 122 сетевой вычислительной среды 100 могут связываться с хост-компьютерами 104 посредством комбинации сетей 120, 110. Согласно некоторым вариантам реализации клиенты 122 могут давать команду вычислительному устройству 102 на запуск экземпляра виртуальной машины для исполнения различных вычислительных операций в интересах клиента 122 или от его имени. В одиночном хост-компьютере 104 в любой данный момент времени могут работать любое количество экземпляров виртуальной машины. Кроме того, различные экземпляры виртуальной машины, работающие на хост-компьютере 104, могут быть связаны с одиночным клиентом 122 или с множеством различных клиентов 122.
[0023] Компонент 102 управления может быть реализован в форме аппаратных средств или комбинации аппаратных средств и программного обеспечения. Например, компонентом 102 управления может быть вычислительная система из одного или большего количества вычислительных устройств, сконфигурированных для исполнения одной или большего количества программ для выполнения функций, описанных в настоящей заявке. Согласно некоторым вариантам реализации компонент управления может включать одно или большее количество хост-компьютеров 104a-104n.
[0024] На Фиг. 2 показан пример компонента 102 управления более подробно. Компонент 102 управления может содержать блок 202 определения профиля, блок 204 размещения, блок 206 переноса, хранилище 208 данных эксплуатационных показателей и хранилище 210 данных профиля. Согласно некоторым вариантам реализации компонент 102 управления может содержать большее или меньшее количество блоков и хранилищ данных, чем показано на Фиг. 2. Например, в компоненте управления может отсутствовать отдельный блок 206 переноса данных, если признак переноса не осуществлен или осуществлен блоком 204 размещения. Согласно другому подходящему варианту реализации компонент 102 управления может содержать дополнительные хранилища данных для обобщенных профилей клиента.
[0025] При использовании блок 202 определения профиля может получать эксплуатационные данные относительно эксплуатационных показателей и использования ресурсов экземплярами конкретной конфигурации экземпляра виртуальной машины в конкретное время, всех экземпляров виртуальной машины, связанных с конкретным клиентом 122, и т.п.  Блок 202 определения профиля может анализировать эксплуатационные данные и разрабатывать эксплуатационный профиль вычислительных ресурсов, используемых экземпляром виртуальной машины или группой экземпляров виртуальных машин, которые должны быть профилированы. Например, эксплуатационные данные могут включать в себя накопленные (исторические) измерения относительно объема используемой памяти, использования центрального процессора (CPU), величины переданного или принятого трафика сети, величины используемого пространства жесткого диска, количества дисковых операций, количества использованной электроэнергии (например, количества, использованного хост-компьютером 104, которое может относиться к экземпляру виртуальной машины), величины инициированного трафика сетевого канала, и т.п.  Затем, блок 202 определения профиля может определить среднее значение для каждого из результатов измерений, относящихся к экземплярам конкретной конфигурации экземпляра виртуальной машины или группе конфигураций экземпляров виртуальных машин, и сохранить указанные средние значения в эксплуатационном профиле. Эксплуатационный профиль необязательно должен быть ограничен средними значениями результатов измерений. Например, эксплуатационный профиль может включать в себя другие статистические анализы, такие как срединное значение, среднеквадратичное отклонение, гистограмму использования или любые другие соответствующие или пригодные для использования данные. Согласно некоторым вариантам реализации эксплуатационный профиль дополнительно может быть охарактеризован в соответствии с временными характеристики использования, такими как время дня, день года и т.п.
[0026] Эксплуатационный профиль также может быть охарактеризован в соответствии с ожидаемыми измерениями и эксплуатационными показателями. Например, в эксплуатационный профиль может быть включено отличие от ожидаемых эксплуатационных показателей, которое может наблюдаться и которое в целом называется флуктуацией. Такие данные могут быть использованы для определения того, удовлетворены ли требования целей проекта, соглашений сервисного уровня и других обещаний потребителю или обязательств перед потребителем, или определения того, как часто указанные требования оказываются неудовлетворенными. Блок 204 размещения может учитывать флуктуацию эксплуатационного показателя при принятии решений о будущих размещениях и предпринимает попытки удерживания данного эксплуатационного показателя в пределах ожидаемого диапазона или иным способом обеспечивает возможность удовлетворения обязательств перед потребителем. Согласно некоторым вариантам реализации эксплуатационный профиль может содержать другие данные, такие как предпочтительное или необходимое время задержки, предпочтительный или необходимый набор инструкций, и т.п.  Такие данные могут быть предоставлены потребителями или определены путем анализа работы экземпляров виртуальной машины, выполненного блоком 202 определения профиля.
[0027] Например, поставщик услуг может предоставить виртуальные машины трех классов: малого, среднего и большого. Каждый класс может быть связан с заранее заданным количеством каждого вычислительного ресурса, который будет зарезервирован для использования экземплярами виртуальной машины (например, малые виртуальные машины могут иметь ОЗУ объемом 2 ГБ, средние виртуальные машины могут иметь ОЗУ объемом 8 ГБ, большие виртуальные машины могут иметь ОЗУ объемом 32 ГБ). Клиенты могут копировать экземпляры виртуальной машины, оснащенные операционной системой и прикладным программным обеспечением, такие как большая виртуальная машина, оснащенная серверным программным обеспечением для сети Интернет. Могут быть зарегистрированы результаты измерений относительно использования вычислительных ресурсов экземпляром большой виртуальной машины, оснащенной серверным программным обеспечением для сети Интернет. Затем, блок 202 определения профиля может вычислить ожидаемое количество использования ресурсов для будущих экземпляров конфигурации экземпляра виртуальной машины, например, при ее использовании в качестве web-сервера. Ожидаемое количество использования ресурсов может сформировать основу эксплуатационного профиля, определяемого блоком 202 определения профиля. Затем, блок 202 определения профиля может модифицировать эксплуатационный профиль, когда будет построен набор данных, содержащий результаты измерения фактического использования ресурсов по времени.
[0028] Данные профиля, которые используются в блоке 202 определения профиля, могут быть получены из множества источников. Как описано выше, данные могут быть получены от субъекта, связанного с виртуальной машиной. Данные также могут быть получены непосредственно из компонента анализа рабочей нагрузки хост-компьютера 104, на котором воплощен экземпляр виртуальной машины. Согласно некоторым вариантам реализации данные могут быть получены из хранилища 208 данных эксплуатационных показателей. Хранилище 208 данных эксплуатационных показателей может быть встроено в компонент 102 управления, как показано на Фиг. 2, или оно может быть физически расположено на отдельном вычислительном устройстве, таком как выделенный сервер для системы управления реляционной базой данных (RDBMS). Эксплуатационные профили, определенные блоком 202 определения профиля, могут быть сохранены в хранилище 210 данных профиля. Подобно хранилищу 208 данных эксплуатационного показателя хранилище 210 данных профиля может быть встроено в компонент 102 управления или расположено в отдельном вычислительном устройстве, таком как выделенный сервер RDBMS.
[0029] В некоторых сетевых вычислительных средах 100 могут иметься тысячи или больше экземпляров виртуальных машин, подлежащих профилированию, и каждый эксплуатационный профиль может быть выполнен, например, на основании анализа данных использования, уникальных для конкретных конфигураций экземпляров виртуальных машин, или данных использования для конкретного клиента. Для эффективного использования эксплуатационных профилей для принятия решения о размещении созданных экземпляров виртуальных машин на хост-компьютерах 104a-104n эксплуатационные профили могут быть обобщены. Соответственно, множество различных конфигураций экземпляра виртуальной машины могут быть связаны с одними и теми же или по существу подобными эксплуатационными профилями, даже если имеются различия в фактическом использовании ресурса, связанного с каждой конфигурацией экземпляров виртуальной машины. Например, блок 202 определения профиля может связать конфигурацию экземпляра виртуальной машины с заранее заданным ожидаемым количеством использования вместо сохранения индивидуализированного эксплуатационного профиля для каждой конфигурации экземпляра виртуальной машины. Заранее заданный эксплуатационный профиль может включать диапазоны использования для каждого измеренного вычислительного ресурса. Кроме того, эксплуатационные профили могут быть иерархическими таким образом, что конкретная конфигурация экземпляра виртуальной машины связана с конкретным эксплуатационным профилем, а также с более общим эксплуатационным профилем, который самостоятельно связан с множеством конфигураций экземпляров виртуальной машины.
[0030] Согласно некоторым вариантам реализации, эксплуатационные профили могут быть дополнительно объединены в категории. Например, многие конфигурации экземпляров виртуальной машины, каждая из которых связана с разным количеством использования сети, могут быть категоризированы как "легкие сетевые приложения" или "тяжелые сетевые приложения" в зависимости от того, превышает или не превышает результат измерения использования некоторый порог. В такой схеме классификации конфигурация экземпляра виртуальной машины, которая, когда она создана, прежде всего выполняет локальные вычислительные операции и редко использует сетевое соединение, может быть распределена в ту же самую категорию "легких сетевых приложений" в качестве конфигурации экземпляра виртуальной машины, которая часто использует сетевое соединение, но только для передач весьма небольшого объема, которые могут считаться нулевыми по сравнению с общей пропускной способностью сети, доступной для хост-компьютеров 104a-104n, на которых размещен экземпляр виртуальной машины. Такие обобщенные эксплуатационные профили также могут быть созданы на основании составленной из двух или большего количества категорий, таких как "легкое сетевое приложение/тяжелое процессорное приложение" и "легкое сетевое приложение/легкое процессорное приложение". Возвращаясь к предыдущему примеру, две конфигурации экземпляра виртуальной машины могут быть связаны с различными категориями. Конфигурация экземпляра виртуальной машины, которая после создания, прежде всего, выполняет локальные вычислительные операции и редко использует сетевое соединение, может быть категоризирована как "легкое сетевое приложение/тяжелое процессорное приложение", в то время как конфигурация экземпляра виртуальной машины, которая после ее копирования часто инициирует небольшие передачи по сети, может быть категоризирована как "легкое сетевое приложение/легкое процессорное приложение", если использование центрального процессора экземпляром виртуальной машины ниже порога.
[0031] Как описано выше, эксплуатационные профили, конкретные для конфигурации экземпляра виртуальной машины или обобщенные для многих конфигураций экземпляров виртуальной машины, могут быть использованы для идентификации хост-компьютера 104a-104n для размещения экземпляров виртуальной машины. Блок 204 размещения может быть задействован, когда клиент 122 инициирует вычислительный сеанс или когда виртуальная машина воплощена иным способом. Блок 204 размещения может определить, какой эксплуатационный профиль связан с экземпляром виртуальной машины в данный момент времени. Например, эксплуатационный профиль может быть индивидуализированным профилем, содержащим измерения фактического использования ресурса, связанного с экземпляром виртуальной машины в данный момент времени суток, в течение текущего месяца года и т.п.  В некоторых случаях измерения могут быть конкретизированы для конкретного клиента таким образом, что может быть создан и доступен эксплуатационный профиль для конкретного клиента. Клиентоориентированный эксплуатационный профиль может быть применен к конкретной конфигурации экземпляра виртуальной машины, или он в целом может быть применен к множеству различных конфигураций экземпляра виртуальной машины. Дополнительно, эксплуатационный профиль может быть обобщен на основании общего характера использования ресурса, связанного с экземпляром виртуальной машины, который также может быть обобщен на основании текущего времени суток и т.п.  Затем блок 204 размещения виртуальной машины может выбрать хост-компьютер 104 для запуска экземпляров виртуальной машины на основании доступности ресурсов хост-компьютеров 104a-104n и ожидаемого использования ресурса экземпляра виртуальной машины, определенного из эксплуатационного профиля.
[0032] Использование ресурса может быть динамическим в течение всего времени существования одиночного экземпляра конкретной конфигурации экземпляра виртуальной машины и по множеству экземпляров конкретной конфигурации экземпляра виртуальной машины. Блок переноса 206 компонента 102 управления может отслеживать использование ресурса каждого исполняющегося экземпляра виртуальной машины и хост-компьютера 104, на котором исполняется данный экземпляр виртуальной машины. Когда использование ресурса изменяется, блок 206 переноса, подобно блоку 204 размещения виртуальной машины, описанному выше, может выбрать соответствующий хост-компьютер 104 для размещения экземпляра виртуальной машины. Новый экземпляр виртуальной машины может быть запущен на выбранном хост-компьютере 104, и состояние исполнения экземпляра виртуальной машины (оперативная память, исходные данные, и т.п. ) может быть скопировано в новый экземпляр виртуальной машины. Когда новый экземпляр виртуальной машины готов к началу исполнения, предыдущий экземпляр виртуальной машины может быть завершен без потери данных и без существенной потери рабочих характеристик. Новый экземпляр виртуальной машины может исполняться более эффективно благодаря доступным ресурсам.
[0033] Согласно некоторым вариантам реализации вместо создания нового экземпляра виртуальной машины на другом хост-компьютере и завершения предыдущей копии, ресурсы могут быть перераспределены. Когда использование ресурса или эксплуатационные характеристики изменяются, конкретной виртуальной машине может быть выделены дополнительные ресурсы (например, память). Например, ресурс может быть перераспределен от других виртуальных машин, которые, как ожидается, полностью не используют данный ресурс.
[0034] На Фиг. 3 показана блок-схема способа 300 определения эксплуатационного профиля для конфигурации экземпляра виртуальной машины. Способ 300 может быть осуществлен компонентом 102 управления. Компонент 102 управления может принять запрос от клиента 122 или может быть извещен иным способом для создания экземпляра виртуальной машины. После создания экземпляра виртуальной машины, идентификации созданного экземпляра виртуальной машины или запуска созданной виртуальной машины компонент 102 управления 102 может отслеживать или иным способом принимать эксплуатационные данные относительно использования вычислительного ресурса, связанного с данным экземпляром виртуальной машины. На основании данных использования ресурса и эксплуатационного показателя компонент 102 управления может определить или обновить эксплуатационный профиль для конфигурации экземпляра виртуальной машины, или обновить существующий эксплуатационный профиль. Предпочтительно эксплуатационный профиль может быть сравнен с другими эксплуатационными профилями и обобщен, а конфигурация экземпляра виртуальной машины может быть ассоциирована с категорией использования ресурса.
[0035] Способ 300 начинается на этапе 302. Способ 300 может быть начат автоматически, например, в ответ на прием запроса создания экземпляра виртуальной машины. Например, способ 300 может быть выполнен в форме ряда исполняемых программных команд и сохранен на дисковом машиночитаемом носителе вычислительной системы, с которой связан компонент 102 управления 102. После инициирования способа 300 исполняемые программные команды могут быть загружены в запоминающее устройство, такое как ОЗУ, и исполнены одним или большим количеством процессоров вычислительной системы. Согласно некоторым вариантам реализации вычислительная система может содержать множество вычислительных устройств, таких как серверы, и способ 300 может быть исполнен множеством серверов последовательно или параллельно.
[0036] На этапе 304 компонент 102 управления или некоторый другой компонент запускает экземпляр виртуальной машины. Как подробно описано ниже со ссылкой на Фиг. 5, компонент управления может выбрать хост-компьютер 104 для запуска экземпляра виртуальной машины на основании ожидаемого потребления ресурсов экземпляра виртуальной машины и ресурсов, которые в настоящее время имеются в наличии в хост-компьютерах 104a-104n. Ресурсы, ожидаемые к потреблению экземпляра виртуальной машины или доступные для экземпляра виртуальной машины, могут быть определены из существующего эксплуатационного профиля, из данных, принятых от клиента 122 или другого субъекта, требующего, чтобы экземпляр виртуальной машины был запущен, и т.п.
[0037] Способ 300 может перейти к этапу 306 для недавно запущенного экземпляра виртуальной машины для получения эксплуатационных показателей и создания или модификации эксплуатационного профиля. При осуществлении способа 300 на этапе 304 могут быть запущены и/или размещены любое количество дополнительных экземпляров виртуальной машины на основании того же самого эксплуатационного профиля, существовавшего изначально или модифицированного во время исполнения способа 300 для ранее запущенных экземпляров виртуальной машины. Таким образом, способ 300 может быть выполнен в любом количестве параллельных копий, в целом соответствующем количеству экземпляров виртуальной машины, связанных с эксплуатационным профилем (или, в случае иерархии профилей, профилем, имеющим наиболее высокий уровень в иерархии), которые могут быть исполнены в конкретное время.
[0038] На этапе 306 ресурсы, используемые экземпляры виртуальной машины, могут быть отслежены, могут быть получены результаты измерения использования ресурса и других эксплуатационных показателей. На этапе 308 могут быть зарегистрированы эксплуатационные показатели. Отслеживание может выполняться компонентом 102 управления или некоторым другим компонентом, таким как компонент 421 анализа рабочей нагрузки хост-компьютера 104, на котором исполняется экземпляр виртуальной машины. Эксплуатационные показатели могут быть сохранены в хранилище 208 данных эксплуатационных показателей. Согласно вариантам реализации, в которых использован компонент 421 анализа рабочей нагрузки, указанный компонент 421 анализа рабочей нагрузки может кратковременно или долгосрочно сохранять эксплуатационные показатели. Компонент анализа рабочей нагрузки может передавать данные относительно эксплуатационных показателей компоненту 102 управления для хранения по существу в режиме реального времени, в запланированные интервалы, после завершения виртуальной машины, в некоторое другое время или не передавать вообще.
[0039] На Фиг. 4 показаны результаты измерения использования нескольких ресурсов, предоставленных множеству экземпляров виртуальной машины хост-компьютером 104. Как показано на Фиг. 4, хост-компьютер 104 может предоставлять вычислительные ресурсы, такие как память 402, центральный процессор 404 и пропускная способность 406 сети. Согласно некоторым вариантам реализации, экземплярам виртуальной машины могут быть предоставлено увеличенное или уменьшенное количество вычислительных ресурсов. Например, экземплярам виртуальной машины не разрешена связь с другими устройствами, и, таким образом, отсутствует необходимость в измерении использования сетевого интерфейса 406. В другом примере хост-компьютер 104 может предоставлять пространство жесткого диска, дисковые операции, электроэнергию и т.п.  и отслеживать использование указанных ресурсов.
[0040] Согласно некоторым вариантам реализации поставщик вычислительных ресурсов, такой как оператор сетевой вычислительной среды 100, может предоставлять клиентам набор количественно определимых вычислительных ресурсов для исполнения экземпляров виртуальной машины. Например, клиент 122 может зарезервировать для одной из его конфигураций экземпляра виртуальной машины заранее заданное количество памяти, такой как оперативная память (ОЗУ), заранее заданное количество вычислительной мощности, такой как ядра центрального процессора, и заданное значение пропускной способности сети, обеспеченное сетевым интерфейсом. Объем памяти 402 хост-компьютера 104 может быть разделен на части 410, 412, 414, которые зарезервированы для одиночных экземпляров виртуальной машины (например, части 412, 414) или для работы хост-компьютера 104 и других внутренних процедур (например: части 410). Часть, зарезервированная для работы хост-компьютера 104, может содержать гипервизор для обеспечения запуска, исполнения и завершения экземпляров виртуальной машины, операционной системы, драйверов и т.п.  Кроме того, хост-компьютер 104 может содержать компонент 421 анализа рабочей нагрузки, который отслеживает использование ресурса и дополнительно связан с компонентом 102 управления. Компонент 421 анализа рабочей нагрузки также может находиться в пространстве 410 памяти и может быть встроен в гипервизор 420, или может быть независимым компонентом, который совместно использует пространство 410 памяти. Согласно некоторым вариантам реализации компонент 421 анализа рабочей нагрузки может находиться в пространстве 412, 414 памяти, зарезервированной для экземпляров виртуальной машины клиента. В таких случаях компонент 421 анализа рабочей нагрузки может быть встроен в конфигурации экземпляра виртуальной машины или включен в экземпляр виртуальной машины после копирования. Согласно дополнительным вариантам реализации компонент 421 анализа рабочей нагрузки может находиться в отдельном пространстве памяти, зарезервированной для него, или может быть реализован в качестве аппаратного компонента, такого как независимое аппаратное устройство, которое не осуществляет совместное использование памяти 402 хост-компьютера 104.
[0041] Во многих случаях экземпляр виртуальной машины не может использовать всю часть ресурса, которая зарезервирована для него. Например, виртуальная машина VM1 422, показанная на Фиг. 4, может быть экземпляром виртуальной машины клиента 122 и может быть запущена в пространстве 412 памяти, весь объем которой зарезервирован для использования указанной виртуальной машиной VM1 422. При использовании VM1 422 не может использовать все пространство 412 памяти и в некоторых случаях может использовать лишь небольшую часть зарезервированного пространства 412 памяти. Однако со временем использование пространства 412 памяти может измениться, и VM1 422 может использовать по существу все пространство 412 памяти. Компонент 421 анализа рабочей нагрузки может отслеживать эти изменения и регистрировать результаты измерений и другие данные, такие как время суток, конкретная конфигурация данного экземпляра виртуальной машины или конфигурации других экземпляров виртуальной машины, если таковые имеются, исполненные на хост-компьютере 104. Компонент 421 анализа рабочей нагрузки может передавать данные компоненту 102 управления или хранилищу данных. Согласно некоторым вариантам реализации компонент 421 анализа рабочей нагрузки может временно запоминать данные и впоследствии передавать их компоненту 102 управления в соответствии с графиком или в ответ на триггерное событие, такое как завершение машины VM1 422. Подобно измерению и записи данных об использовании памяти 402 компонент 421 анализа рабочей нагрузки или некоторый другой компонент могут отслеживать использование центрального процессора 404, сетевого интерфейса 406 или любого другого вычислительного ресурса, используемого машиной VM1 422.
[0042] Могут быть получены и зарегистрированы данные относительно любых отклонений от ожидаемых или предпочтительных эксплуатационных показателей. Например, измерения использования ресурса и другие эксплуатационные показатели могут быть зарегистрированы и сравнены с эксплуатационным профилем для определения того, имеется ли отклонение от ожидаемого или предпочтительного показателя. В некоторых случаях эксплуатационные показатели могут быть зарегистрированы на поклиентской основе. Таким образом, могут быть зарегистрированы данные относительно отклонения, на основании которого могут быть приняты решения о будущем размещении или переносе. Кроме того, могут быть зарегистрированы данные относительно ресурсов вне хоста, таких как время задержки, трафик канала связи и т.п.  Такие данные могут быть зарегистрированы компонентом 421 анализа рабочей нагрузки, или некоторый компонент, внешний по отношению к хост-компьютеру (например, компонент 102 управления или переключатель), может отслеживать эксплуатационные показатели. Согласно некоторым вариантам реализации может быть определено использование ресурса, которое необязательно уменьшает его доступность. Например, если экземпляр виртуальной машины или прикладное программное обеспечение, работающее на нем, выполняет некоторые криптографические операции, или замечено, что они вызывают некоторые криптографические функции или инструкции, такие данные также могут быть зарегистрированы. Блок 204 размещения или блок 206 переноса может использовать такие данные при запуске или переносе экземпляра виртуальной машины. Может быть выбран хост-компьютер, который предоставляет более эффективные или более мощные криптографические инструкции, например такое устройство, которое поддерживает Усовершенствованный стандарт шифрования (AES) Intel и его Новые инструкции (AES-NI), или подобное устройство.
[0043] На этапе 310 блок 202 определения профиля или некоторый другой блок компонента 102 управления может модифицировать эксплуатационный профиль, связанный с экземпляром виртуальной машины, или создать новый эксплуатационный профиль. Как описано выше, эксплуатационные профили могут включать данные о типичном или ожидаемом использовании ресурса, отклонениях от ожидаемых или требующихся эксплуатационных показателей, и т.п.  Например, эксплуатационный профиль может состоять из средних значений результатов измерений для каждого из множества различных экземпляров одиночной конфигурации экземпляра виртуальной машины. Каждый ресурс может быть связан с множеством измерений, которые соответствуют работе на основании конкретного клиента, времени суток, дня года, или других параметров окружающей среды.
[0044] Согласно некоторым вариантам реализации каждый ресурс эксплуатационного профиля может быть связан с оценкой или некоторой другой индикацией использования, но не статистического измерения. Например, каждому ресурсу может быть назначена оценка от 1 до 10, причем более высокие номера связаны с самыми тяжелыми и/или самыми частыми пользователями ресурса. Согласно некоторым вариантам реализации эксплуатационные профили могут быть дополнительно обобщены. Заранее заданный набор обобщенных эксплуатационных профилей может охватывать диапазоны измерений или оценок для каждого ресурса. Например, конфигурация экземпляра виртуальной машины, из которой скопирована машина VM1 422, может быть назначена одному обобщенному эксплуатационному профилю, если в течение ночных часов машина VM1 422 использует не больше чем 25% своего пространства 412 памяти, но использует почти 100% своего доступа к центральному процессору. Обобщенные эксплуатационные профили могут включать множество диапазонов измерений для каждого ресурса в зависимости от времени суток или других факторов. Возвращаясь к предыдущему примеру, конфигурация экземпляра виртуальной машины, из которой скопирована машина VM1 422, вместо этого может быть назначена другому заранее заданному эксплуатационному профилю, если экземпляры виртуальной машины обычно используют ресурсы способом, описанным выше, в течение ночных часов, но в течение дневных часов используют 50% как своего сегмента 412 памяти, так и своего доступа к центральному процессору. Множество обобщенных эксплуатационных профилей могут быть назначены конкретным конфигурациям экземпляра виртуальной машины на основании их использования конкретными клиентами. Например, каждый клиент, который является пользователем конфигурации экземпляра виртуальной машины, может быть связан с различными эксплуатационными профилями.
[0045] Согласно некоторым вариантам реализации каждый клиент 122 может быть связан с обобщенным эксплуатационным профилем даже при том, что он имеет множество различных конфигураций экземпляра виртуальной машины, и даже при том, что каждая конфигурация экземпляра виртуальной машины может использовать ресурсы иным образом. Клиент 122 может иметь одну конфигурацию экземпляра виртуальной машины, такую как конфигурация, из которой скопирована машина VM1 422, показанная на Фиг. 4, которая может быть независимо профилирована в качестве легкого процессорного приложения, поскольку другая конфигурация экземпляра виртуальной машины, такая как конфигурация, из которой скопирована машина VM2 424, может быть независимо профилирована в качестве тяжелого процессорного приложения. Клиент 122 может быть профилирован как умеренный пользователь центрального процессора, поскольку его усредненное использование центрального процессора является умеренным. Кроме того, клиент 122 может быть профилирован как тяжелый пользователь центрального процессора, поскольку он имеет по меньшей мере одну конфигурацию экземпляра виртуальной машины, которая является тяжелым процессорным приложением. Согласно другим вариантам реализации клиенты могут иметь несколько связанных эксплуатационных профилей для каждой конфигурации образа виртуальной машины. Различные клиенты или пользователи по существу того же самого образа виртуальной машины, такой как машина VM1 422, могут использовать различное количество ресурсов, даже при том, что образ виртуальной машины является общей конфигурацией. Данный клиент, запускающий конкретную виртуальную машину, с наибольшей вероятностью будет использовать эту машину таким же образом, как зарегистрировано ранее, и потреблять приблизительно те же самые ресурсы.
[0046] Эксплуатационные профили для каждой конфигурации экземпляра виртуальной машины могут быть сохранены в хранилище 210 данных профилей. Фактические измерения для каждого профиля могут быть сохранены в эксплуатационном профиле, или также может быть сохранен идентификатор или другой признак, категория которого или обобщенный эксплуатационный профиль которого связаны с конфигурацией экземпляра виртуальной машины. Согласно вариантам реализации, в которых определяют и используют профили клиента вместо профилей виртуальной машины или в дополнение к профилям виртуальной машины, данные профиля клиента могут быть сохранены в том же самом хранилище 210 данных или в другом хранилище данных.
[0047] На этапе 312 могут быть созданы или модифицированы конкретные или обобщенные эксплуатационные профили. Например, могут быть созданы или модифицированы высокоуровневые профили, если используются иерархические профили. Накопленные (исторические) эксплуатационные показатели могут быть доступны из хранилища 208 данных эксплуатационных показателей для каждой конфигурации экземпляра виртуальной машины, связанной с эксплуатационным профилем высокого уровня, и в некоторых случаях независимо от того, что конфигурации экземпляра виртуальной машины связаны с профилем низкого уровня. Статистические анализы могут быть выполнены, и отклонения эксплуатационного показателя могут быть определены как описано выше. Предпочтительно к модифицированному или обобщенному эксплуатационному профилю с высоким уровнем может иметь доступ с возможностью его использования блок 204 размещения или блок 206 переноса, при копировании или переносе экземпляров виртуальной машины, которые отличаются от экземпляра виртуальной машины, связанной с текущим исполнением способа 300. Соответственно, зарегистрированные эксплуатационные показатели, связанные с одним экземпляром виртуальной машины, могут быть использованы для тонкой настройки размещения и исполнения других экземпляров виртуальной машины, даже тех, которые копируют не из той же самой конфигурации экземпляра виртуальной машины.
[0048] Ниже описан показанный на Фиг. 5 способ 500 определения размещения экземпляра виртуальной машины на основании эксплуатационных профилей. Способ 500 может быть осуществлен компонентом 102 управления. Компонент 102 управления может принять запрос от клиента 122 или может быть иным способом извещен о запуске экземпляра виртуальной машины из конкретной конфигурации или образа экземпляра виртуальной машины. Компонент 102 управления может идентифицировать хост-компьютеры 104a-104n, в которых может быть размещен экземпляр виртуальной машины, и определить текущее состояние хост-компьютеров 104a-104n в отношении доступных вычислительных ресурсов. Предпочтительно компонент 102 управления также может получить эксплуатационный профиль для конфигурации экземпляра виртуальной машины, которая должна быть скопирована, и определить, в котором из доступных хост-компьютеров 104a-104n может быть наиболее эффективно размещена виртуальная машина с точки зрения доступных ресурсов. Может быть выбран хост-компьютер 104, в котором уже исполняются виртуальные машины и который обязан предоставлять большую часть своих ресурсов или все свои ресурсы размещенным в нем уже исполняющимся виртуальным машинам. На основании эксплуатационных профилей исполняющихся в текущий момент времени экземпляра виртуальной машины и экземпляра виртуальной машины, которая должен быть запущена, компонент 102 управления может запустить экземпляр виртуальной машины на хост-компьютере 104, если компонент 102 управления 102 определяет, что хост-компьютер 104 может предоставить вычислительные ресурсы, которые вероятно будут потребляться экземплярами виртуальной машины. В некоторых случаях запуск нового экземпляра виртуальной машины может сопровождаться повторным использованием ресурсов (например, распределением тех же самых ресурсов среди множества экземпляров виртуальной машины). Кроме того, компонент 102 управления 102 может отслеживать исполнение экземпляров виртуальной машины на хост-компьютере 104 и исполнение переноса одного или большего количества экземпляров виртуальной машины в другой хост-компьютер 104, если недостаточно вычислительных ресурсов для удовлетворения каждого экземпляра виртуальной машины.
[0049] Способ 500 начинается на этапе 502. Способ 500 может быть инициирован автоматически, например, в ответ на прием запроса на запуск экземпляра виртуальной машины. Например, способ 500 может быть выполнен в форме последовательности исполняемых программных инструкций, сохраненных на энергонезависимом машиночитаемом дисковом носителе вычислительной системы, с которой связан компонент 102 управления. При инициировании способа 500 исполняемые программные команды могут быть загружены в память, такую как ОЗУ, и исполнены одним или большим количеством процессоров вычислительной системы. Согласно некоторым вариантам реализации вычислительная система может содержать множество вычислительных устройств, таких как серверы, и способ 500 может быть осуществлен множеством серверов последовательно или параллельно.
[0050] На этапе 504 компонент 102 управления может принять запрос или некоторое другое уведомление на инициализацию экземпляра виртуальной машины. Уведомление может быть принято от клиента 122, хост-компьютера 104 или некоторого другого компонента или субъекта. Согласно некоторым вариантам реализации экземпляр виртуальной машины может потребовать инициализации другого экземпляра виртуальной машины, другого экземпляра той же самой конфигурации или образа экземпляра виртуальной машины, и т.п.
[0051] На этапе 506 блок 204 размещения VM или некоторый другой блок компонента 102 управления может получить эксплуатационный профиль для экземпляра виртуальной машины, который должен быть запущен. Эксплуатационный профиль может быть загружен из хранилища 210 данных профилей или получен из некоторого другого источника. Блок 204 размещения VM может проинспектировать эксплуатационный профиль для определения того, какие ресурсы и в каком количестве данный экземпляр виртуальной машины с наибольшей вероятностью будет использовать. Как описано выше, эксплуатационный профиль конфигурации экземпляра виртуальной машины может быть различным в зависимости от параметров окружающей среды, таких как время суток. В таких случаях блок 204 размещения машины VM компонента 102 управления может рассмотреть такие параметры окружающей среды при инспектировании эксплуатационного профиля.
[0052] На этапе 508 блок 204 размещения машины VM или некоторый другой блок 102 компонента управления может выбрать хост-компьютер 104 для запуска экземпляра виртуальной машины на основании доступных ресурсов и эксплуатационного профиля. Например, сетевая вычислительная среда 100 может содержать множество хост-компьютеров 104a-104n. Хост-компьютеры 104a-104n необязательно должны быть идентичными; некоторые могут иметь увеличенное или уменьшенное ОЗУ, чем другие, более или менее мощные процессоры или различное количество процессоров, и т.п.  Блок 204 размещения машины VM может выбрать хост-компьютер 104 для запуска экземпляра виртуальной машины на основании ожидаемого использования ресурса, идентифицированного эксплуатационным профилем, и ресурсов, к которым каждое вычислительное устройство предоставляет доступ.
[0053] Согласно некоторым вариантам реализации хост-компьютер 104 может быть сконфигурирован для размещения заданного набора экземпляров конкретной виртуальной машины или класса виртуальных машин. Как показано на Фиг. 4, хост-компьютер 104 может иметь достаточный объем памяти 402, в котором может быть зарезервировано заранее заданное пространство 410 памяти для гипервизора 420, и два дополнительных пространства 412, 414 памяти заранее заданного размера для виртуальных машин. Два экземпляра 422, 424 виртуальной машины могут быть запущены на хост-компьютере 104, причем каждому экземпляру 422, 424 виртуальной машины назначено отдельное пространство 412, 414 памяти. Клиент 122 может резервировать конкретное количество ресурса, чтобы сделать его доступным для своих экземпляров 422, 424 виртуальной машины, например, путем выбора конкретного класса виртуальной машины (например: малого, среднего или большого классов, как описано выше) для конфигурирования. Пространства 412, 414 памяти могут соответствовать максимальному разрешенному количеству ресурсов, доступных для экземпляров 422, 424 виртуальной машины и зарезервированных клиентом 122. Однако на практике экземпляры 422, 424 виртуальной машины могут не использовать все количество вычислительного ресурса, который зарезервирован для них. Например, как показано на Фиг. 4, экземпляры 422, 424 виртуальной машины используют только часть пространств 412, 414 памяти, которые зарезервированы для них. Может быть предпочтительным использование такого избыточного пространства памяти и других избыточных вычислительных ресурсов для сокращения количества хост-компьютеров 104a-104n, необходимых для обслуживания всех исполняемых в текущий момент времени экземпляров виртуальной машины или для более эффективного использования ресурсов хост-компьютеров 104a-104n, которые работают.
[0054] На Фиг. 6 показан хост-компьютер 104 с повторно использованными вычислительными ресурсами. Третий экземпляр 426 виртуальной машины запущен на хост-компьютере 104, даже при том, что хост-компьютер 104 содержит только два пространства 412, 414 памяти, доступные для экземпляров виртуальной машины. На основании эксплуатационного профиля, связанного с каждой из экземпляров 422, 424, 426 виртуальной машины, блок 204 размещения виртуальной машины может определить, что машина VM2 422 использует только часть своего доступного пространства 414 памяти, и машина VM3 426 также использует только часть своего доступного пространства памяти, когда они запущены. Таким образом, блок 204 размещения виртуальной машины может запустить машину VM3 426 на том же самом вычислительном устройстве, на котором запущена машина VM2 424, и назначить им то же самое пространство 414 памяти.
[0055] Как показано на Фиг. 6, машина VM1 422 использует по существу все свое пространство 412 памяти, и, таким образом, блок 204 размещения виртуальной машины не может назначить другой экземпляр виртуальной машины тому же самому пространству 412 памяти 412 из-за эксплуатационного профиля машины VM1 422. Однако машина VM1 422 использует только небольшое количество вычислительной мощности центрального процессора 442, и, таким образом, хост-компьютер 104, на котором исполняется машина VM1 422, может быть кандидатом на повторное использование, если эксплуатационные профили экземпляров виртуальной машины являются дополняющими. В примере, показанном на Фиг. 6, машина VM2 424 использует большое количество вычислительной мощности 444 центрального процессора. Однако, если эксплуатационный профиль машины VM3 426 указывает, что данная машина - легкий пользователь вычислительной мощности центрального процессора, три экземпляра виртуальной машины VM1 422, VM2 424 и VM3 426 могут быть кандидатами на повторное использование по причине дополнения, вместо перекрытия, эксплуатационных профилей конфигураций экземпляра виртуальной машины, из которых они скопированы. Дополнительные ресурсы могут быть факторизованы в определение повторного использования для обеспечения облегченного доступа каждого экземпляра виртуальной машины, исполняющейся в хост-компьютере 104, к количеству каждого вычислительного ресурса, который обычно требуется для данного экземпляра виртуальной машины. Например, использование 406 пропускной способности сети, как показано на Фиг. 6, также подтверждает пример определения повторного использования, описанный выше, поскольку даже при том, что эксплуатационный профиль для машины VM3 426 может указывать, что эта машина представляет собой тяжелое приложение для пропускной способности сети, машины VM1 422 и VM2 424 используют только небольшое количество пропускной способности сети.
[0056] На этапе 510 блок 204 размещения виртуальной машины или некоторый другой блок компонента 102 управления может разместить экземпляр виртуальной машины в хост-компьютере 104, который идентифицирован на этапе 508. Как описано выше, экземпляр виртуальной машины может быть размещен в хост-компьютере 104 с другими экземплярами виртуальной машины, которые имеют зарезервированное количество вычислительных ресурсов, равное или превышающее количество ресурсов, предоставленных хост-компьютером 104. В некоторых случаях превышение может быть значительным.
[0057] На Фиг. 7 показано фактически повторно использованный хост-компьютер 104. Как описано выше, клиенты 122 могут резервировать указанное количество вычислительных ресурсов для использования экземплярами виртуальной машины клиента. Однако в некоторых случаях клиент 122 может значительно переоценивать количество вычислительных ресурсов, которые действительно могут быть использованы его экземплярами виртуальной машины. В крайних случаях клиент 122 может резервировать большое количество вычислительных ресурсов, запускать экземпляры виртуальной машины, связанные с этими ресурсами и, затем, держать экземпляры виртуальной машины в простое или иначе фактически не использовать зарезервированные ресурсы. Со временем могут быть разработаны эксплуатационные профили для экземпляров виртуальной машины или для клиента 122, которые отражают существенное недоиспользование зарезервированных ресурсов. Затем, компонент 102 управления может запустить большое количество таких экземпляров виртуальной машины с низким коэффициентом использования на одиночном хост-компьютере 104. Хост-компьютер 104, показанный на Фиг. 7, содержит семь различных экземпляров 422, 424, 426. 722, 724, 726, 728 виртуальной машины, совместно использующих вычислительные ресурсы, которые обычно могут быть зарезервированы только для двух экземпляров виртуальной машины, как описано выше со ссылкой на Фиг. 4 и 6. Однако все еще имеется избыточная пропускная способность каждого из указанных трех вычислительных ресурсов 402, 404, 406. В некоторых случаях сотни или большее количество экземпляров виртуальной машины могут быть размещены в хост-компьютере 104, таком как хост-компьютер 104, имеющий большое количество доступных вычислительных ресурсов, и экземпляры виртуальной машины являются по существу неактивными.
[0058] На этапе 512 может быть отслежено использование ресурса для каждого экземпляра виртуальной машины. Во время существования конкретных экземпляров виртуальной машины компонент 421 анализа рабочей нагрузки может отслеживать работу и извещать компонент 102 управления, если один из экземпляров виртуальной машины начинает использовать ресурсы на уровне, который не может быть обслужен повторно использованным хост-компьютером 104, или если использование ресурса или эксплуатационный показатель иным способом отличаются от ожидаемого или требуемого значения. Согласно некоторым вариантам реализации компонент 102 управления может осуществлять отслеживание.
[0059] На этапе 514 компонент 102 управления может определить, отличается ли использование ресурса или эксплуатационный показатель от ожидаемого или необходимого значения. Например, компонент управления может определить, превышает ли изменение в использовании ресурса некоторый порог или может иным способом вызвать нежелательное ухудшение рабочих характеристик. Экземпляр виртуальной машины, которая начинает использовать повышенное количество вычислительного ресурса, чем ожидалось на основании ее эксплуатационного профиля и размещения, определенных компонентом 102 управления, может быть передан хост-компьютеру 104, использование ресурсов которого превышено в меньшей степени, или хост-компьютеру 104, использование ресурсов которого не превышено вообще. В таких случаях исполнение способа 500 может быть возвращено к этапу 508, на котором блок 206 переноса виртуальной машины или некоторый другой компонент 102 управления определяет, которому вычислительному устройству следует передать виртуальную машину 842.
[0060] На Фиг. 8 показан хост-компьютер 104a с повторно использованной вычислительной мощностью 404a центрального процессора. Экземпляр виртуальной машины VM4 842 может начать потреблять большое количество доступной вычислительной мощности 404a центрального процессора, вопреки своему эксплуатационному профилю. Однако клиент 122, связанный с экземпляром виртуальной машины VM4 842, может зарезервировать большое количество вычислительной мощности центрального процессора для конфигурации экземпляра, из которой воплощена машина VM4 842, и таким образом может быть предпочтительным предоставить экземплярам виртуальной машины VM4 842 увеличенную вычислительную мощность центрального процессора, чем вычислительная мощность, которую может предоставить повторно использованный хост-компьютер 104a. Как показано на Фиг. 8, хост-компьютер 104b может быть кандидатом на такой перенос. Экземпляр виртуальной машины VM8 844 в настоящий момент потребляет только малую долю вычислительной мощности 404b центрального процессора, доступной в хост-компьютере 104b, и компонент 102 управления может определить, что эксплуатационный профиль, связанный с машиной VM8 844, указывает, что вряд ли эта машина будет потреблять большее количество вычислительной мощности. Блок 206 переноса виртуальной машины может инициировать перемещение машины VM4 842 из хост-компьютера 104a в хост-компьютер 104b.
[0061] Перемещение экземпляра виртуальной машины может включать в себя первоначально выполняемый запуск копии той же самой конфигурации или образа экземпляра виртуальной машины на целевом хост-компьютере 104b, поскольку экземпляр виртуальной машины на исходном хост-компьютере 104a продолжает исполняться. Затем, состояние исполнения экземпляра виртуальной машины на исходном хост-компьютере 104b, включающее данные о пространстве памяти или жесткого диска, связанном с экземпляром виртуальной машины, сетевых соединениях, установленных экземпляром виртуальной машины, и т.п., может быть дублировано в целевой хост-компьютер 104b. Экземпляр виртуальной машины на исходном хост-компьютере 104a может быть завершен, а экземпляр виртуальной машины на целевом хост-компьютере 104b может продолжить исполнение от этой точки.
[0062] Согласно некоторым вариантам реализации первоначальное размещение или перемещение программной рабочей нагрузки (например, приложения или узла хранения данных) может быть связано с использованием экземпляром виртуальной машины программной рабочей нагрузки или с взаимодействием с программной рабочей нагрузкой, даже при том, что программная рабочая нагрузка необязательно является непосредственно экземпляром виртуальной машины. Например, программная рабочая нагрузка может состоять из узла хранения данных, осуществленного в форме агента, сохраняющего данные в соответствии с ожиданиями экземпляров виртуальной машины, которые могут использовать эти данные. В таких случаях первоначальное размещение или перемещение рабочей нагрузки (в данном случае узла хранения данных) может быть основано на ее размещении рядом с экземпляром виртуальной машины или на обеспечении иным способом ее повышенной доступности для экземпляра виртуальной машины или экземпляров виртуальных машин, которые будут использовать эту нагрузку.
[0063] Различные варианты реализации настоящего изобретения могут быть сформулированы в следующих пунктах:
1. Система для профилирования использования вычислительного ресурса, содержащая:
один или большее количество процессоров;
машиночитаемое запоминающее устройство; и
блок управления, содержащий исполняемые инструкции, сохраненные в машиночитаемом запоминающем устройстве, причем блок управления при его исполнении одним или большим количеством процессоров сконфигурирован для:
приема запроса на инициализацию новой копии конфигурации экземпляра виртуальной машины, причем конфигурация экземпляра виртуальной машины связана с ожидаемым количеством использования первого вычислительного ресурса, при этом указанное ожидаемое количество использования основано по меньшей мере частично на множестве предварительных измерений, связанных с использованием экземплярами одной или большего количества подобных конфигураций экземпляра виртуальной машины первого вычислительного ресурса; и
в ответ на запрос:
идентификации вычислительного устройства из множества вычислительных устройств на основе по меньшей мере того, больше ли доступное количество первого вычислительного ресурса на указанном вычислительном устройстве, чем ожидаемое количество; и
вызова по меньшей мере частичной инициализации новой копии на указанном вычислительном устройстве.
2. Система по п. 1, в которой использование первого вычислительного ресурса включает одно из использования центрального процессора (CPU), использования пространства памяти, использования сети, использования пространства жесткого диска или использования электроэнергии.
3. Система по п. 1, в которой блок управления при его исполнении дополнительно сконфигурирован для:
получения множества предварительных измерений относительно использования первого вычислительного ресурса; и
определения эксплуатационного профиля для конфигурации экземпляра виртуальной машины на основе по меньшей мере частично множества предварительных измерений, причем указанный эксплуатационный профиль содержит ожидаемое количество использования ресурса.
4. Система по п. 3, в которой эксплуатационный профиль дополнительно содержит необходимую рабочую характеристику вычислительного устройства.
5. Система по п. 4, в которой необходимая рабочая характеристика относится к объему запоминающего устройства, производительности центрального процессора (CPU), пропускной способности сети, сетевой задержке, положению в топологии сети, набору команд или отклонению показателя рабочих характеристик.
6. Система по п. 4, в которой идентификация вычислительного устройства включает определение того, что характеристика, связанная с указанным вычислительным устройством, соответствует необходимой характеристике.
7. Система для профилирования использования вычислительного ресурса, содержащая:
один или большее количество процессоров;
машиночитаемое запоминающее устройство, содержащее исполняемые инструкции, которые при их исполнении одним или большим количеством процессоров конфигурируют систему для:
определения рабочего ограничения для экземпляра виртуальной машины по меньшей мере частично на основе эксплуатационных показателей, определенных в результате работы по меньшей мере копии подобной виртуальной машины;
приема запроса на копирование виртуальной машины; и в ответ на запрос:
идентификации хост-компьютера из множества хост-компьютеров, связанных с одной или большим количеством рабочих характеристик, относящихся к работе экземпляров виртуальной машины, частично на основе того, удовлетворяет ли одна или большее количество характеристик рабочему ограничению; и
обеспечения по меньшей мере частичного копирования нового экземпляра виртуальной машины в указанном хост-компьютере.
8. Система по п. 7, в которой по меньшей мере один из эксплуатационных показателей относится к использованию центрального процессора (CPU), использованию пространства памяти, использованию сети, использованию пространства жесткого диска или использованию электроэнергии.
9. Система по п. 7, в которой по меньшей мере одна из одной или большего количества характеристик включает объем запоминающего устройства, производительность центрального процессора (CPU), пропускную способность сети, сетевую задержку, положение внутри топологии сети, набор команд или отклонение показателя рабочих характеристик.
10. Система по п. 7, в которой рабочее ограничение относится к ожидаемому количеству использования вычислительного ресурса, предоставленного хост-компьютером.
11. Система по п. 10, в которой указанное ожидаемое количество использования дополнительно основано по меньшей мере частично на данных, принятых от клиента, связанного с виртуальной машиной.
12. Система по п. 7, в которой блок при его исполнении дополнительно сконфигурирован для:
приема дополнительного эксплуатационного показателя о работе новой копии в хост-компьютере, причем указанный дополнительный эксплуатационный показатель относится к одной или большему количеству рабочих характеристик; и
в ответ на определение на основании дополнительного эксплуатационного показателя того, что одна или большее количество рабочих характеристик больше не удовлетворяют рабочему ограничению,
передачи новой копии второму вычислительному устройству, связанному с одной или большим количеством дополнительных рабочих характеристик, которые удовлетворяют рабочему ограничению.
13. Способ профилирования использования вычислительного ресурса, реализуемый с использованием компьютера и включающий этапы, согласно которым:
принимают с использованием компонента управления центра обработки данных, содержащего одно или большее количество вычислительных устройств, запрос на инициализацию программной рабочей нагрузки, связанной с эксплуатационным профилем, который основан по меньшей мере частично на множестве исторических эксплуатационных показателей, связанных с указанной программной рабочей нагрузкой, и
в ответ на запрос:
идентифицируют вычислительное устройство из множества вычислительных устройств по меньшей мере частично на основе эксплуатационного профиля и одной или большем количестве рабочих характеристик, связанных с данным вычислительным устройством, и
обеспечивают инициализацию программной рабочей нагрузки в вычислительном устройстве.
14. Способ по п. 13, согласно которому программная рабочая нагрузка содержит экземпляр виртуальной машины, операционную систему, узел сети хранения данных (SAN) или приложение.
15. Способ по п. 13, согласно которому по меньшей мере один из множества исторических эксплуатационных показателей относится к использованию центрального процессора (CPU), использованию пространства памяти, использованию сети, использованию пространства жесткого диска или использованию электроэнергии.
16. Способ по п. 13, согласно которому по меньшей мере одна из одной или большего количества рабочих характеристик содержит объем запоминающего устройства, производительность центрального процессора (CPU), пропускную способность сети, сетевую задержку, положение внутри топологии сети, набор команд или отклонение показателя рабочих характеристик.
17. Способ по п. 13, согласно которому эксплуатационный профиль содержит первое ожидаемое количество использования ресурса, связанное с первым вычислительным ресурсом, причем указанное первое ожидаемое количество использования ресурса основано по меньшей мере частично на множестве исторических эксплуатационных показателей относительно использования первого ресурса, при этом характеристика из одной или большего количества характеристик включает доступность первого вычислительного ресурса.
18. Способ по п. 17, согласно которому каждый из множества исторических эксплуатационных показателей относительно использования первого ресурса связан с временем регистрации измерения использования, причем эксплуатационный профиль дополнительно основан по меньшей мере частично на времени регистрации каждого из множества исторических эксплуатационных показателей.
19. Способ по п. 13, дополнительно включающий этапы, согласно которым получают по меньшей мере часть из множества исторических эксплуатационных показателей от компонента анализа работы, связанного с программной рабочей нагрузкой или с вычислительным устройством из множества вычислительных устройств, исполняющих указанную программную рабочую нагрузку.
20. Способ по п. 13, дополнительно включающий этапы, согласно которым определяют эксплуатационный профиль по меньшей мере частично на основе множества исторических эксплуатационных показателей.
21. Способ по п. 13, дополнительно включающий этапы, согласно которым определяют эксплуатационный профиль по меньшей мере частично на основе соглашения об уровне услуг с клиентом, связанным с программной рабочей нагрузкой.
22. Способ по п. 13, согласно которому эксплуатационный профиль содержит необходимую рабочую характеристику вычислительного устройства.
23. Способ по п. 22, согласно которому идентификация вычислительного устройства дополнительно основана по меньшей мере частично на определении того, что рабочая характеристика из одной или большего количества рабочих характеристик, связанных с указанным вычислительным устройством, соответствует необходимой рабочей характеристике.
24. Способ по п. 22, дополнительно включающий этапы, согласно которым:
принимают по существу текущий эксплуатационный показатель о работе программной рабочей нагрузки в вычислительном устройстве, причем указанный по существу текущий эксплуатационный показатель относится к одной или большему количеству рабочих характеристик, и
в ответ на определение на основании по существу текущего эксплуатационного показателя того факта, что ни одна из одной или большего количества рабочих характеристик, связанных с указанным вычислительным устройством, не соответствует необходимой рабочей характеристике,
передают программную рабочую нагрузку второму вычислительному устройству, связанному с рабочей характеристикой, соответствующей необходимой рабочей характеристике.
25. Способ по п. 13, согласно которому эксплуатационный профиль содержит первый заданный эксплуатационный профиль из множества заданных эксплуатационных профилей.
26. Способ по п. 25, согласно которому заданные эксплуатационные профили связаны с уровнями в рабочей иерархии, причем первый заданный эксплуатационный профиль связан с более высоким уровнем в рабочей иерархии относительно программной рабочей нагрузки.
27. Способ по п. 13, согласно которому эксплуатационный профиль содержит настроенный под клиента эксплуатационный профиль, причем множество исторических эксплуатационных показателей связаны с инициализацией или использованием программной рабочей нагрузки клиентом.
28. Способ по п. 13, согласно которому эксплуатационный профиль содержит срединное значение, среднеквадратичное отклонение или гистограмму использования исторического эксплуатационного показателя.
29. Способ по п. 13, согласно которому эксплуатационный профиль основан по меньшей мере частично на накопленных эксплуатационных показателях за конкретный период времени.
30. Система для управления совместно используемыми вычислительными ресурсами, содержащая:
один или большее количество процессоров; и
машиночитаемое запоминающее устройство, сохраняющее исполняемые инструкции, которые при их исполнении одним или большим количеством процессоров конфигурируют систему для:
приема запроса на инициализацию первого экземпляра первой виртуальной машины, связанной с первым ожидаемым количеством использования первого вычислительного ресурса, причем первое ожидаемое количество использования основано по меньшей мере частично на эксплуатационных показателях, определенных в результате предыдущей работы по меньшей мере экземпляра подобной виртуальной машины;
выбора вычислительного устройства из множества вычислительных устройств, сконфигурированных для предоставления первого вычислительного ресурса, при этом второй экземпляр второй виртуальной машины исполняется в указанном вычислительном устройстве, причем заданное количество первого вычислительного ресурса зарезервировано для использования второй копией, и при этом вычислительное устройство выбрано по меньшей мере частично на основе заданного количества, которое больше, чем сумма первого ожидаемого количества использования и второго ожидаемого количества использования, связанного с второй копией, первого вычислительного ресурса, и
обеспечения по меньшей мере частичной инициализации первой копии в вычислительном устройстве, причем первая копия и вторая копия совместно используют заданное количество первого вычислительного ресурса.
31. Система по п. 30, в которой первый вычислительный ресурс содержит одно из производительности центрального процессора (CPU), пространства памяти, пропускной способности сети, пространства жесткого диска или электроэнергии.
32. Система по п. 30, в которой первая копия и вторая копия связаны с различными клиентами.
33. Система по п. 30, в которой исполняемые инструкции дополнительно конфигурируют систему для:
обеспечения по меньшей мере частичной инициализации третьего экземпляра третьей виртуальной машины в вычислительном устройстве,
причем третья копия связана с третьим ожидаемым количеством использования первого вычислительного ресурса,
при этом заданное количество также больше, чем сумма первого ожидаемого количества использования, второго ожидаемого количества использования и третьего ожидаемого количества использования,
и причем первая копия, вторая копия и третья копия совместно используют заданное количество первого вычислительного ресурса.
34. Система по п. 30, в которой исполняемые инструкции дополнительно конфигурируют систему для:
получения результата первого измерения использования первого вычислительного ресурса первой копией и результата второго измерения использования первого вычислительного ресурса второй копией; и
в ответ на определение, что результат первого измерение или результат второго измерения превышает порог,
передачи первой копии или второй копии второму вычислительному устройству.
35. Способ управления совместно используемыми вычислительными ресурсами, реализуемый с использованием компьютера и включающий этапы, согласно которым:
принимают посредством системы управления центра обработки данных, содержащей одно или большее количество вычислительных устройств, запрос на инициализацию первой программной рабочей нагрузки, связанной с первым рабочим ограничением, причем первое рабочее ограничение основано по меньшей мере частично на первом множестве исторических эксплуатационных показателей о работе первой программной рабочей нагрузки в хост-компьютере,
в ответ на запрос,
идентифицируют первый хост-компьютер из множества хост-компьютеров по меньшей мере на основе первого рабочего ограничения и одной или большем количестве рабочих характеристик, связанных с первым хост-компьютером,
причем первый хост-компьютер содержит вторую программную рабочую нагрузку, связанную с вторым рабочим ограничением, и
при этом идентифицирование содержит определение того, сможет ли удовлетворять одна или большее количество рабочих характеристик первого хост-компьютера как первому рабочему ограничению, так и второму рабочему ограничению, и
вызывают по меньшей мере частично размещение первой программной рабочей нагрузки в первом хост-компьютере.
36. Способ по п. 35, согласно которому первая программная рабочая нагрузка или вторая программная рабочая нагрузка содержат экземпляр виртуальной машины, экземпляр приложения или операционную систему.
37. Способ по п. 35, согласно которому первая программная рабочая нагрузка содержит узел хранения данных, причем идентифицирование дополнительно включает определение, удовлетворяет ли размещение узла хранения данных в первом хост-компьютере рабочему ограничению, связанному с виртуальной машиной, которая будет использовать указанный узел хранения данных.
38. Способ по п. 35, согласно которому по меньшей мере одна из одной или большего количества рабочих характеристик содержит объем запоминающего устройства, производительность центрального процессора (CPU), пропускную способность сети, сетевую задержку, положение внутри топологии сети, набор команд, отклонение показателя рабочих характеристик или электроэнергию.
39. Способ по п. 35, согласно которому первое рабочее ограничение или второе рабочее ограничение относятся к использованию пространства памяти, использованию центрального процессора (CPU), использованию пропускной способности сети, сетевой задержке, положению внутри топологии сети, доступности набора команд, отклонению показателя рабочих характеристик или использованию электроэнергии.
40. Способ по п. 35, согласно которому первое рабочее ограничение относится к первому ожидаемому количеству использования первого вычислительного ресурса, и второе рабочее ограничение относится к второму ожидаемому количеству использования первого вычислительного ресурса, причем первой исполняемой компьютером программе и второй исполняемой компьютером программе предоставлена возможность одновременного потребления первого ожидаемого количества использования и второго ожидаемого количества использования соответственно первого вычислительного ресурса.
41. Способ по п. 40, согласно которому рабочая характеристика из одной или большего количества рабочих характеристик содержит доступное количество первого вычислительного ресурса, причем указанный способ дополнительно включает этапы, согласно которым:
предотвращают по меньшей мере частично совокупное потребление первой исполняемой компьютером программой и второй исполняемой компьютером программой, которое больше, чем доступное количество первого вычислительного ресурса.
42. Способ по п. 35, дополнительно включающий этапы, согласно которым обеспечивают по меньшей мере частично инициализацию третьей исполняемой компьютером программы в первом хост-компьютере,
причем третья исполняемая компьютером программа связана с третьим рабочим ограничением, и
при этом ожидается, что одна или большее количество рабочих характеристик первого хост-компьютера могут удовлетворять каждому из первого рабочего ограничения, второго рабочего ограничения и третьего рабочего ограничения.
43. Способ по п. 35, дополнительно включающий этапы, согласно которым:
получают один или большее количество эксплуатационных показателей о работе первой исполняемой компьютером программы в первом хост-компьютере и
в ответ на определение по меньшей мере частично на основе одного или большего количества эксплуатационных показателей того факта, что первое ограничение вероятно больше не будет удовлетворено, передают первую исполняемую компьютером программу или вторую исполняемую компьютером программу второму хост-компьютеру.
44. Способ по п. 35, дополнительно включающий этапы, согласно которым:
получают один или большее количество эксплуатационных показателей о работе второй исполняемой компьютером программы в первом хост-компьютере и
в ответ на определение по меньшей мере частично на основе одного или большего количества эксплуатационных показателей того факта, что второе ограничение вероятно больше не будет удовлетворено, передают первую исполняемую компьютером программу или вторую исполняемую компьютером программу второму хост-компьютеру.
45. Способ по п. 35, дополнительно включающий этапы, согласно которым:
получают один или большее количество эксплуатационных показателей относительно одной или большего количества рабочих характеристик первого хост-компьютера и
в ответ на определение по меньшей мере частично на основе одного или большего количества эксплуатационных показателей того, что первое ограничение или второе ограничение вероятно больше не будут удовлетворены, передают первую исполняемую компьютером программу или вторую исполняемую компьютером программу второму хост-компьютеру.
46. Система для управления совместно используемыми вычислительными ресурсами, содержащая:
один или большее количество процессоров;
машиночитаемое запоминающее устройство, сохраняющее исполняемые инструкции, которые при их исполнении одним или большим количеством процессоров конфигурируют систему для:
приема запроса на инициализацию первой исполняемой компьютером программы, связанной с первым рабочим ограничением, причем первое рабочее ограничение основано по меньшей мере частично на первом множестве исторических эксплуатационных показателей о работе первой исполняемой компьютером программы в хост-компьютере, и
идентификации первого хост-компьютера из множества хост-компьютеров, связанного с одной или большим количеством рабочих характеристик,
причем первый хост-компьютер содержит вторую исполняемую компьютером программу, связанную с вторым рабочим ограничением, и
при этом первый хост-компьютер идентифицирован по меньшей мере частично на основе одной или большем количестве рабочих характеристик, удовлетворяющих как первому рабочему ограничению, так и второму рабочему ограничению.
47. Система по п. 46, в которой исполняемые инструкции дополнительно конфигурируют систему по меньшей мере частично для вызова исполнения первой исполняемой компьютером программы в первом хост-компьютере.
48. Система по п. 46, в которой первая исполняемая компьютером программа или вторая исполняемая компьютером программа содержат один из экземпляров виртуальной машины, копии приложения или операционной системы.
49. Система по п. 46, в которой по меньшей мере одна из одной или большего количества рабочих характеристик содержит объем запоминающего устройства, производительность центрального процессора (CPU), пропускную способность сети, сетевую задержку, положение внутри топологии сети, набор команд, отклонение показателя рабочих характеристик или электроэнергию.
50. Система по п. 46, в которой первое рабочее ограничение или второе рабочее ограничение относятся к использованию пространства памяти, использованию центрального процессора (CPU), использованию пропускной способности сети, сетевой задержке, положению внутри топологии сети, доступности набора команд, отклонению показателя рабочих характеристик или использованию электроэнергии.
51. Система по п. 46, в которой первое рабочее ограничение относится к первому ожидаемому количеству использования первого вычислительного ресурса, и второе рабочее ограничение относится к второму ожидаемому количеству использования первого вычислительного ресурса, причем первой исполняемой компьютером программе и второй исполняемой компьютером программе предоставлена возможность одновременного потребления первого ожидаемого количества использования и второго ожидаемого количества использования соответственно первого вычислительного ресурса.
52. Система по п. 51, в которой исполняемые инструкции дополнительно конфигурируют систему для предотвращения по меньшей мере частично совокупного потребления первой исполняемой компьютером программой и второй исполняемой компьютером программой, которое больше, чем доступное количество первого вычислительного ресурса.
53. Система по п. 46, в которой исполняемые инструкции дополнительно конфигурируют систему для:
определения того, сможет ли удовлетворять одна или большее количество рабочих характеристик первого хост-компьютера каждому из первого рабочего ограничения, второго рабочего ограничения и третьего рабочего ограничения, причем третье рабочее ограничение связано с третьей исполняемой компьютером программой; и
обеспечения по меньшей мере частичной инициализации третьей исполняемой компьютером программы в первом хост-компьютере.
54. Система по п. 46, в которой исполняемые инструкции дополнительно конфигурируют систему для:
получения одного или большего количества эксплуатационных показателей о работе первой исполняемой компьютером программы в первом хост-компьютере; и
в ответ на определение по меньшей мере частично на основе одного или большего количества эксплуатационных показателей того, что первое ограничение вероятно больше не будет удовлетворено, передачи первой исполняемой компьютером программы или второй исполняемой компьютером программы второму хост-компьютеру.
55. Система по п. 46, в которой исполняемые инструкции дополнительно конфигурируют систему для:
получения одного или большего количества эксплуатационных показателей о работе второй исполняемой компьютером программы в первом хост-компьютере; и
в ответ на определение по меньшей мере частично на основе одного или большего количества эксплуатационных показателей того, что второе ограничение вероятно больше не будет удовлетворено, передачи первой исполняемой компьютером программы или второй исполняемой компьютером программы второму хост-компьютеру.
56. Система по п. 46, в которой исполняемые инструкции дополнительно конфигурируют систему для:
получения одного или большего количества эксплуатационных показателей относительно одной или большего количества рабочих характеристик первого хост-компьютера; и
в ответ на определение по меньшей мере частично на основе одного или большего количества эксплуатационных показателей того, что первое ограничение или второе ограничение вероятно больше не будут удовлетворены, передачи первой исполняемой компьютером программы или второй исполняемой компьютером программы второму хост-компьютеру.
[0064] В зависимости от варианта реализации некоторые действия, события или функции любого из способов или алгоритмов, описанных в настоящей заявке, могут быть выполнены в различной последовательности, могут быть добавлены, объединены или устранены совсем (например, не все описанные операции или события являются необходимыми для практического осуществления алгоритма). Кроме того, согласно некоторым вариантам реализации операции или события могут быть выполнены одновременно, например, путем многопотоковой обработки, обработки с прерыванием или посредством множества процессоров или ядер процессора, или с использованием другой параллельной архитектуры, отличающейся от последовательной.
[0065] Различные иллюстративные логические этапы, блоки, подпрограммы и этапы алгоритмов, представленные в связи с вариантами реализации, описанными в настоящей заявке, могут быть осуществлены в форме электронных аппаратных средств, компьютерной программы или комбинации того и другого. Для наглядного представления этой взаимозаменяемости аппаратных средств и программного обеспечения различные иллюстративные компоненты, этапы, блоки и шаги описаны выше в целом в терминах их функциональных средств. Осуществление таких функциональных средств в форме аппаратных средств или программного обеспечения зависит от конкретного случая применения и конструктивных ограничений, наложенных на общую систему. Описанные функциональные средства могут быть осуществлены различными способами в каждом конкретном случае применения, но такие решения варианта реализации не должны быть интерпретированы как отход от объема защиты настоящего изобретения.
[0066] Этапы способа, процесса, подпрограммы или алгоритма, описанные в соединении с вариантами реализации, представленными в настоящей заявке, могут быть выполнены непосредственно в форме аппаратных средств, программного модуля, исполняемого процессором, или в комбинации того и другого. Программный модуль может находиться в памяти ОЗУ, флэш-памяти, памяти ПЗУ, памяти ППЗУ, памяти СППЗУ, регистрах, на жестком диске, сменном диске, CD-ROM или может быть сохранен в любой другой форме энергонезависимой машиночитаемой среды хранения. Примерная среда хранения может быть соединена с процессором таким образом, что процессор может считывать данные из среды хранения и записывать данные в среду хранения. Согласно другому варианту реализации среда хранения может являться неотъемлемой частью процессора. Процессор и среда хранения могут быть реализованы в специализированных интегральных схемах. Специализированные интегральные схемы могут быть расположены в терминале пользователя. Согласно другому варианту реализации процессор и среда хранения могут быть выполнены в форме дискретных компонентов в терминале пользователя.
[0067] Условные термины, используемые в настоящей заявке, такие как помимо прочего "мочь", "мог бы", "может", "например", и т.п. , если явно не указано иное или не вытекает иное из контекста, в целом предназначены для передачи того, что некоторые варианты реализации включают, в то время как другие варианты реализации не включают некоторые признаки, элементы и/или этапы. Таким образом, эти условные термины в целом не должны быть истолкованы в том смысле, что признаки, элементы и/или этапы в любом случае требуются для одного или большего количества вариантов реализации, или что один или большее количество вариантов реализации обязательно содержат логику для решения с согласия или предложения автора заявки вопроса о включении этих признаков, элементов и/или этапов или их реализации в каком-либо конкретном варианте реализации. Термины "содержащий", "включающий", "имеющий" и т.п.  являются синонимами и используются во включительном смысле, в неограничивающей форме, и не исключают дополнительных элементов, признаков, действий, операции, и т.п.  Кроме того, термин "или" используется во включительном смысле (но не в исключительном смысле), так что при использовании, например, в отношении списка элементов термин "или" означает один, некоторые или все элементы в списке.
[0068] Соединительное выражение, такое как фраза "по меньшей мере один из X, Y и Z", если специально не указано иное, следует понимать с учетом контекста как используемое в общем для утверждения, что этот пункт, термин, и т.п.  может быть или X, или Y, или Z, или их комбинация. Таким образом, такое соединительное выражение в целом не предназначено для толкования в том смысле, что некоторые варианты реализации требуют, чтобы присутствовали по меньшей мере одно из X, по меньшей мере одно из Y и по меньшей мере одно из Z для каждого.
[0069] Несмотря на то что в приведенном выше подробном описании показаны, описаны и указаны новые признаки в применении к различным вариантам реализации, следует понимать, что могут быть сделаны различные удаления, замены и изменения в форме и подробностях устройств или показанных алгоритмов без отступления от принципа настоящего изобретения. Как может быть понято, некоторые варианты реализации настоящих изобретений, описанных в настоящей заявке, могут быть осуществлены в форме, которая не предоставляет все признаки и преимущества, сформулированные в настоящей заявке, поскольку некоторые признаки могут быть использованы или осуществлены отдельно от других. Объем защиты некоторых изобретений, описанных в настоящей заявке, определен в пунктах приложенной формулы, но не в соответствии с предшествующим описанием. Все изменения, которые попадают в пределы смысла и диапазона эквивалентности пунктов приложенной формулы, должны быть охвачены объемом их защиты.