CN113892084A - 调度任务的存储器高效动态推迟 - Google Patents

调度任务的存储器高效动态推迟 Download PDF

Info

Publication number
CN113892084A
CN113892084A CN202080039634.1A CN202080039634A CN113892084A CN 113892084 A CN113892084 A CN 113892084A CN 202080039634 A CN202080039634 A CN 202080039634A CN 113892084 A CN113892084 A CN 113892084A
Authority
CN
China
Prior art keywords
duty cycle
job
task
execution
indication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080039634.1A
Other languages
English (en)
Inventor
P·戈什
S·纳拉西姆汉
S·A·拉姆普拉萨德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN113892084A publication Critical patent/CN113892084A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

动态推迟系统和方法提供了一种手段,其按照工作周期的数目以及响应于触发事件的发生两者,来推迟分布式计算系统实体的任务的执行。通过根据工作周期的数目推迟调度,存储器占用减少,因为调度矩阵仅使用一个字节来存储该数目。该方法还利用字节的最高有效位来指示调度作业是否要响应于触发事件而被调用。

Description

调度任务的存储器高效动态推迟
背景技术
执行大规模计算作业的常规方法通常需要用户依赖静态生成的任务执行调度。此外,这些调度取决于存储器资源的消耗,存储器资源帮助维持任务在分布式环境中的发生的记录并且管理作业的队列。因此,对于高效和有效地调度作业的新构思和改进构思仍然存在重要领域。
发明内容
根据本公开的第一方面的数据处理系统包括处理器和计算机可读介质。计算机可读介质包括指令,指令在由处理器执行时使处理器:接收如下第一指示:在分布式计算环境中要被执行的第一作业被动态推迟直到触发事件发生为止的第一指示;在第一工作周期期间检测触发事件的首次发生;以及响应于检测到触发事件的首次发生,在紧跟在第一工作周期之后的第二工作周期期间,发起第一作业的首次执行。
根据本公开的第二方面的方法包括:接收如下第一指示:在分布式计算环境中要被执行的第一作业被动态推迟直到触发事件发生为止的第一指示;在第一工作周期期间检测触发事件的首次发生;以及响应于检测到触发事件的首次发生,在紧跟在第一工作周期之后的第二工作周期期间,发起第一作业的首次执行。
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步被描述。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用作确定所要求保护的主题的范围的帮助。
附图说明
附图描绘了根据本教导的一种或多种实施方式,仅作为示例而非限制。在图中,相同的附图标记指代相同或相似的元件。此外,应当理解,附图不一定按比例绘制。
图1图示了用于修改任务执行调度的用户接口的实施方式;
图2是图示示出动态任务执行调度的一个示例的日历的概念图;
图3是针对再次发生的任务的执行的静态调度的实施方式的示意图;
图4是针对再次发生的任务的执行的动态调度的实施方式的示意图;
图5是用于实现动态推迟系统的系统图的图示;
图6是用于实现动态推迟过程的一个实施方式的调度矩阵的示例;
图7是注释工具的用户定制的一个实施方式的流程图;
图8是图示用于共享和管理经注释的电子内容的过程的实施方式的流程图;
图9是示例计算设备的框图,计算设备可以用于提供本文描述的机制的实施方式;以及
图10是图示被配置为从机器可读介质读取指令的示例机器的组件的框图。
具体实施方式
在以下具体实施方式中,许多具体细节通过示例的方式被阐述以提供对相关教导的透彻理解。然而,很明显本教导可以在没有这些细节的情况下被实践。在其他情况下,众所周知的方法、步骤、组件和/或电路已经在相对较高的水平上被描述,为了避免不必要地模糊本教导的各方面,没有详细说明。
以下实施方式介绍了一种用于分配作业执行资源的系统和方法,其提升存储器在计算系统中的高效使用,同时确保任务继续被执行期望的次数。该方法(在本文中被称为动态推迟)允许在分布式计算环境中要被执行的作业被调度,以响应于触发事件或已被指定为相对于所服务的实体具有重要意义的事件而发生。作为一个示例,具有24小时的工作周期的调度作业被配置为处理数据中心内的所有邮箱,以及清理与邮箱相关联的元数据。然而,如果邮箱保持非活动状态,则不需要该任务发生。通过实施所公开的方法,调度作业可以被推迟,直到触发事件发生为止。因此,在该示例中,任务可以在邮箱不活动的间隔期间保持被禁用或休眠,相反,当任何邮箱活动发生时,任务可以被‘唤醒’或被启用。在一些实施方式中,动态推迟方法可以与调度方法结合工作,使得在继续没有检测到邮箱的活动的情况下,任务在由调度任务本身指示的时间间隔(例如,10天)之后被执行。此外,如果触发事件(这里,邮箱中的任何活动)在这10天期间的任何时间点发生,该任务也将被发起。
所提出的实施方式还被配置为提供关于这样的任务的执行的更高效的存储器使用。如下文将更详细描述的,任务管理器可以维持矩阵,其中矩阵的每个单元仅为一个字节,并且最高有效位(MSB)表示调度作业的执行是否要基于事件的发生,而剩余七位表示任务应当以其他方式被推迟的工作周期的数目(即,在没有触发事件发生的情况下)。MSB通常是字节排列、序列或二进制表示中最左边的位。因此,如果启用了针对该任务的动态推迟,则MSB被设置为1,并且如果动态推迟被禁用,则MSB被设置为0。然后,剩余7位用于指示要‘跳过’直到该任务应当再次被执行的工作周期的数目。在一个实施方式中,可以由该七位表示的最大值将是127。如果任务的执行旨在仅在触发事件发生时发生,则七位都被设置为1,由此指示:调度作业在触发事件发生之前根本不应当被执行。
为清楚起见,本文为读者描述了一些术语。一般而言,帐户将指代分布式计算环境内的全局唯一标识实体。在一些实施方式中,本文讨论的所有资源和任务都可通过用户帐户访问。通常,用户在使用计算系统的资源之前初始地创建帐户。在创建帐户之后,用户可以使用该帐户向系统提交工作项,并且可以基于工作项来管理用于执行作业的资源。
此外,工作项可以指代将在分布式计算环境中运行的作业的静态表示。工作项可以指定作业的各个方面,包括作业二进制文件、指向要被处理的数据的指针,并且可选地包括用于发起用于执行作业的任务的命令行。此外,工作项可以指定再次发生的调度、优先任务和约束的参数。例如,再次发生的工作项可以被指定在每天下午5点发起。在这样的情况下,作业可以被理解为表示工作项的运行实例。因此,作业包含任务的集合,这些任务一起工作来执行分布式计算。任务可以在分布式计算环境中的一个或多个虚拟机上运行。任务可以被理解为指代作业的基本执行单元。任务通常由任务租户(也被称为任务机)内的虚拟机执行。用户可以指定命令行的附加输入以及指向每个任务的输入数据的指针。在任务的执行的过程期间,任务可以在执行该任务的虚拟机上的其工作目录下创建文件的层级。因此,一般来说,作业是工作项的运行实例。作业可以由多个任务组成,诸如第一任务、第二任务、第三任务等。在一些实施方式中,作业也可以由作业任务管理器组成,作业任务管理器可以用作作业内的所有其他任务的单个控制点。换句话说,工作项可以被理解为表示工作的静态表示。一旦分布式计算系统的资源发起计算性资源(诸如但不限于加载作业、将作业排队、实例化作业内的任务等),该工作项就将被称为作业。因此,一旦系统开始处理工作项,工作项就变成作业。
另外,虚拟机一般指代具有处理能力的逻辑单元。在不同的实施方式中,虚拟机可以与物理处理器一一对应,或者虚拟机可以对应于多个处理器,或者虚拟机可以表示一个或多个处理器上的处理时间/周期的百分比。在一些情况下,对计算设备的引用应当被理解为涵盖虚拟机。可以基于工作项执行作业的虚拟机在使用之前可以与工作项的帐户相关联。此外,池指代虚拟机的逻辑分组。在不同的实施方式中,池可能已经分配了跨越不同数据中心、不同地理定位和/或不同物理配置的虚拟机。
在一个实施方式中,工作项将具有至少一个相关联的池来运行对应于该工作项的(多个)作业。每个帐户(例如,任务帐户)可以创建一个或多个池,该帐户获得针对该一个或多个池的独占访问权,以用于执行与帐户相关联的工作项。池可以在用户提交工作项时被创建,或者工作项可以与现有池相关联。可选地,池可以被关联,以与单个工作项或对应于帐户的工作项的另一个子集一起使用。在一些实施方式中,系统可以为作业自动创建池。例如,再次发生的工作项可以每天在特定时间运行,并且通常需要两个小时来完成。在该示例中,池可以在每天创建作业时被自动创建,并且池可以在作业完成时被删除。
在一些实施方式中,当工作项被用户提交时,工作项可以与虚拟机的一个或多个池相关联。在一个实施方式中,工作项可以排他地与单个池相关联(和/或多个工作项或作业可以与公共池相关联)。虚拟机可以以任何方便的方式被组织在池内。例如,所有虚拟机可以被组织在单个池中,而不管虚拟机的底层处理器的地理定位如何。另一种选项是基于地理定位来组织虚拟机,以使池的所有虚拟机在给定的地理定位中。又一种选项是在地理定位以外的基础上来组织虚拟机,诸如与其他变量的临近度(例如,存储资源、网络延时、用户定位/偏好和安全要求等)。
在另一个实施方式中,池利用系统资源来被形成,以自动生成池。自动池创建允许池在创建工作项或创建作业本身时由系统自动创建。该过程从客户/用户/客户端抽象出池的创建。在一些实施方式中,池在运行作业时被自动创建,并且池在作业完成时被自动禁用或丢弃。在一些其他情况下,池在创建工作项时被自动创建,并且池在删除或完成工作项时被自动禁用或丢弃。
在不同的实施方式中,虚拟机可以运行一个任务和/或多个任务。在一些实施方式中,多个作业可以在相同虚拟机(VM)池上运行。VM池可以在没有用户干预和作业的明确处理的情况下自动增长和收缩;例如,作业可以不负责补偿池的扩展或收缩。类似地,在一些实施方式中,作业可以跨越多个池。这样的多个池的跨越可以通过跨多个池对作业进行负载平衡来被实现,该多个池在VM资源方面能够独立地增加和收缩。在一个实施方式中,在给定时间,池可以由零个虚拟机组成。当作业没有要执行的任务时,这样的情况可能会发生。因此,在一个时间段期间,池可以收缩到零个虚拟机来节省计算资源。
为了更好地向读者介绍系统和方法,图1呈现了用于实施动态推迟执行特征的代表性作业调度用户环境的示例(该系统在下面的图5中被更详细地示意性示出)。在不同的实施方式中,环境可以包括计算设备终端用户,或简单的“用户”110,其可以经由计算设备(“设备”)112与调度资源接口(“调度接口”)150交互。应当理解,设备112被配置为用于连接到网络。
在该示例中,各种调度选项可以经由本地控件被察看和配置,本地控件诸如是调度接口150,其可以提供对与作业调度应用(“应用”)相关联的特征和资源的访问。通常,“本地控件”可以被理解为指代通过客户端应用向应用用户传输内容的机制。例如,本地控件可以包括弹出窗口,其可以作为软件应用用户接口(UI)、交互按钮或可以通过本地应用UI被显示给用户的其他对象来被呈现给用户,以及包括对于特定应用来说是本地的机制,以用于呈现与这些本地控件相关联的内容。在不同的实施方式中,本地控件可以包括任何其他类型的用户接口,诸如对话框、通知、警报、提醒、电子邮件、即时消息或其他应用通信或呈现方式。此外,“触发器事件”或“触发事件”指代与应用的特定使用相关联的事件(或特定的事件序列),其对应于经由本地控件提供的选项的选择,或符合条件的事件。在图1中,触发事件可以被理解为包括“点击”、切换、语音命令或其他输入行动(诸如,鼠标左键或右键单击、触摸屏轻击、数据的选择或其他输入类型)。
如下所述,在不同的实施方式中,调度接口150可以包括用于接收与作业有关的输入的多个域,包括但不限于任务标题或主题域、动态推迟启用域、事件域,和/或频率域。在一些实施方式中,应用可以被配置为向用户呈现附加的或备选的选项。应当理解,(多个)设置和/或偏好选项可以在本文描述的用户接口中的每个用户接口上可用,无论是否被明确标识。
当用户110最初经由调度器接口150调度和/或察看作业调度时,用户110可以被呈现第一可选择选项(“第一选项”)190,以启用他们当前正在察看的作业的动态推迟。如下文将更详细描述的,动态推迟指代一种过程,通过该过程,调度作业可以被配置为运行,其中作业(或任务)的再次发生不是基于工作周期的数目(在该数目之后,它应当再次运行),而是响应于特定事件或事件类型的发生。换句话说,静态作业调度是被配置为在每个工作周期之后发生的过程,而动态作业调度是配置成跟在将被称为“触发事件”的事件之后发生,或者响应于该事件而发生。应当理解,动态作业调度也可以包含或包括作业周期,其中作业被调度为在作业本身定义的工作周期时间跨度之后发生,而且还在具有在调度作业预定义的触发事件发生时执行的选项的情况下起作用。通常,“工作周期”可以指代时间跨度,在该时间跨度之后,为实体运行调度作业;因此,每个调度作业将被理解为具有其自己的工作周期。此外,“触发事件”可以指代已为调度作业选择或定义的事件类型的集合,例如,通过应用将被应用于每个事件的过滤器的集合。触发事件可以被实体创建或实体更新。
在图1的示例中,用户110对修改与实体(诸如电子商务网站)相关联的工作项的调度感兴趣。在一些情况下,实体可以期望调度作业每天(或与一个工作周期相对应的其他时间段)在其所有帐户上运行一次。作为示例,调度作业可以指代对当天发生的涉及网站的所有事务的审计。然而,在一些实施方式中,一些账户通常可能不受定期活动水平的影响,并且这样的日常审计既不必要又低效。例如,审计(或任何其他调度作业)不需要在用户没有活动(例如,帐户非活动)的日子运行。因此,对于一些帐户,实体可以认识到静态驱动的调度方法是对计算资源、时间和存储器的消耗。
在图1中,用户110能够察看两种类型的用户账户调度菜单,包括客户账户菜单180和卖家账户菜单190。关于客户账户菜单,第一任务域132可以被选择或填写(在该情况下,被显示为“客户审计”),并且作为用户对该选项的选择的结果,第一选项134处于“ON”模式,从而启用或激活动态推迟功能。应当理解,用户还可以通过将第一选项134切换回OFF位置来将该选项去激活。然而,在其他实施方式中,作为默认,应用可以向用户呈现已经激活的动态推迟功能,并且如果需要,用户可以禁用该选项。作为激活第一选项134的结果,第一输入域136也被激活(“当该事件发生时,执行任务”),通过它用户110可以定义或标识(例如,从下拉菜单或预定义事件的目录)触发事件,该触发事件应当触发在第一任务域132中选择的任务的发起。在该情况下,用户110已经指示:每当“检测到帐户的任何用户事务”时执行任务。此外,如前所述,在一些实施方式中,动态推迟的任务也可以服从于取决于经过周期的数目的调度,如由第一执行频率域138(“在多少个工作周期后执行任务?)表示的,第一执行频率域138被配置为以指定的间隔请求指定任务的执行。在该情况下,用户110选择了3个周期。这意味着在经过三个周期之后,任务被调度而发生(在第4个周期上)。应当理解,第一执行频率域138不需要被选择或者频率可以为零,使得任务的执行仅基于动态推迟。
出于比较的目的,下面还关于卖家账户菜单190描述了静态配置的作业调度方法,其中第二任务域142可以被选择或填充(在该情况下,被显示为“卖家审计”),并且作为用户对该选项的选择的结果,第二选项144处于“OFF”模式,从而将动态推迟功能禁用或去激活。作为去激活第二选项144的结果,第二输入域146也被去激活(“当该事件发生时,执行任务”),而被配置为以指定间隔请求指定任务的执行的第二次执行频率域148(“在多少个工作周期后执行任务?)仍然可用,但仅限于对应于“下一个周期”的一个选择,这指示审计在与(多个)卖方帐户相关联的每一个工作周期结束时发生的指令。因此,在一些实施方式中,任务的执行可以被配置为在每个工作周期之后(静态地)发生。由此,用户可以考虑和定义调度作业的运筹,并且做出关于以下的选择:需要什么类型的调度、作业应当被执行的频率,以及作业是否应当在一个或多个指定事件发生时自动发生。
应当理解,图中所示的文字和具体措辞仅出于说明的目的,决不限制应用可以通信或接收信息的方式。此外,应当理解,在其他实施方式中,各种选项或其他域可以不同地发生和/或可以在与客户端系统相关联的(多个)屏幕上的任何其他地方被显示或生成,包括间隔开、相邻,或在调度程序用户接口周围。换句话说,附图仅呈现接口的一种可能布局,并且不以任何方式限制任何公开特征的呈现布置。
接下来参考图2,日历200以月视图被呈现,上面显示了一周中的几天。日历200包括多个段、块或框,每个段、块或框表示一天。为清楚起见,图2应当被理解为参考图1中描绘的示例,其中用户已经将再次发生的任务(客户审计)调度为在三个工作周期或每四天后周期发生,以及响应于检测到客户帐户的任何用户事务而发生。因此,日历200表示混合调度,其中任务的执行被调度为以指定的间隔以及响应于指定事件的发生有规律地发生。虽然工作周期在该示例中被表示为每日间隔(24小时周期),但应当理解,工作周期可以包括任何其他时间段(例如,每周、每两周、每月、每半年、每年等)。
关于在特定数目的周期之后发生的任务,可以观察到多个周期发生的任务202每四天发生一次(具有三个完整的周期,其中作业没有在其间执行,并且任务然后在第四天被执行)。在该示例中,任务在第一日期210、第二日期220、第三日期230、第四日期240、第五日期250、第六日期260、第七日期270和第八日期280被执行。这些审计每四天执行一次,只要直接在执行之前的三个周期与相同任务的任何其他执行(非执行周期)的发生不相关联。如果响应于检测到触发事件,该任务可以在其他日期发生。例如,在图2中,在事务发生之后的那几天也观察到任务的动态推迟执行。因此,由于事务在第9日期290发生,审计在下一个(直接后续)周期(这里,在第10日期292)被执行。类似地,由于两个事务在第十一日期296发生,因此另一次审计在对应于第十二日期298的下一个(直接后续)周期中被执行。
在一些实施方式中,根据调度的布置,在一些实施方式中,任务可以更立即地并且跟随触发事件的每个实例而被执行。因此,在一个实施方式中,在触发事件发生的相同工作周期期间,对应的触发任务也可以被执行(而不是在下一个工作周期内)。在另一个示例中,相同的任务可以在每个触发事件之后被重复。例如,两次审计可以在第十一日期296被执行,这对应于在该日期发生的两个分开的事务。然而,在其他实施方式中,在发生事务的一天之后,无论发生了多少事务,任务都可以被执行一次。
此外,在不同的实施方式中,周期地调度的任务可以被配置为适应响应于检测到事务而执行的任务的动态推迟执行,并且从最近执行的任务的日期重新开始工作周期。换句话说,在一些实施方式中,必须在每个周期地调度执行之间发生的预先选择的(即,动态确定的)数目(例如,4)的周期必须仅包括连续周期的序列,在该序列中,作业没有以其他方式被执行(即,响应于事务)。这在图2中被示出,其中在第一日期210执行任务之后,系统以其他方式被配置为在第十三日期212再次执行任务。然而,因为在第九日期290检测到事务,因此任务在下一个工作周期(第十日期292)被执行,周期地调度的任务的执行实际上被“重置”。因此,在任务的每个周期地调度执行之间,总是有四天,即使事件触发的执行可以在任何时间发生。此外,在不同的实施方式中,如果任务被调度为周期执行(例如,在第四天或第四工作周期),并且触发事件也在当天发生,则该任务只需在下一个工作周期期间被执行一次,来适应周期地调度执行和条件触发执行的交集。
为清楚起见,图3描绘了静态调度的示例,并且图4描绘了动态调度的示例。在图3中,作业已经被调度为在每个下一个工作周期发生。因此,在时间T1、T2、T3和T4,指定任务被执行。无论是否存在(多个)帐户中的潜在活动或其他触发事件,该任务都将被执行。相比之下,图4表示动态推迟的调度,其中任务仅响应于触发事件的发生或在触发事件的发生之后发生(这里,由复选标记表示)。因此,当指定事件在一个工作周期期间确实发生时,任务将在下一个周期(时间T3和T8)被执行。然而,在先前周期(T1、T2、T4、T5、T6、T7)中没有发生触发事件的工作周期中,任务不被执行。
关于所提议的系统的另外信息相对于图5的图表被呈现。系统500包括服务510,服务510包括工作处理器520,其被配置为与服务510的多个用户相关联地处理工作项502。系统510被配置为维持用户数据530,并且基于用户数据530来处理所接收的工作项502。在一些示例中,在工作处理器520处理所接收的工作项502的过程中,可以添加、移除和/或修改用户数据530的一部分。在一些实施方式中,服务510被配置为生成工作项502中的一些或全部。在第一说明性示例中,服务510提供电子邮件服务,工作项502是被发送给服务510的用户的电子邮件(其可以被称为“电子邮件工作项”),并且服务510被配置为处理接收的电子邮件工作项502,以便存储在用户数据530中包括的适当用户邮箱中和从中取回。在第二说明性示例中,服务510提供客户订单处理服务,工作项502是客户订单(可以被称为“订单工作项”),服务510的用户包括客户(其下订单)和商家(其履行订单),并且服务510被配置为跟踪订单工作项502,并且将各种与订单有关的功能提供给客户(例如,支付和发货跟踪功能)和商家(例如,发票、支付、库存和发货功能)。注意,尽管图5仅示出了一种服务510,但系统500可以包括一种或多种附加的这样的服务。在一些示例中,单个用户可以与多个这样的服务相关联。
在图5中,服务510包括任务处理器540,其被配置为与多个用户相关联地自动和重复地对用户数据530执行再次发生的的第一操作。第一操作可以被称为“批处理作业”或“作业”,由第一操作执行的用户数据530的处理可以被称为“批处理”,并且第一操作的每次发生可以被称为“批运行”。第一操作的连续发生之间的时间段被称为“工作周期”。在一些示例中,工作处理器520被配置为执行工作项502的实时和/或近实时处理;相反,由任务处理器540执行的第一操作发生的频率较少。在一些示例中,任务处理器510根据预先确定的调度执行第一操作。例如,第一操作可以每天执行一次(因此具有一天的工作周期),作为另一个示例,第一操作可以在每天相同时间或大约相同时间被执行(并且因此具有24小时的工作周期)。尽管在一些示例中,调度可以是周期性的,并且每个工作周期的时间量相同,但在其他示例中,工作周期的时间量可以变化(例如,在第一操作仅在工作日被执行的情况下,工作周期可以从仅一天(工作日之间)到三天以上(由于周末和/或假期)变化)。
注意,尽管图5仅示出了服务510中包括的一个任务处理器540,但服务510和/或系统500可以包括一个或多个附加的这样的任务处理器。在一些实施方式中,系统500包括一个或多个这样的任务处理器,其被配置为与服务510互操作但不被包括在服务510中。作为示例,对于上述客户订单处理服务,服务510可以包括第一任务处理器,其被配置为执行与客户用户相关的操作(例如,根据客户先前的订单,向客户用户发送产品推荐电子邮件),并且可以包括第二任务处理器,其被配置为执行与商家用户相关的操作(例如,生成每周或月度销售报告)。在一些示例中,任务处理器510被配置为根据公共调度和/或不同调度对用户数据530执行多个不同的操作。
不是简单地对用户数据530中的所有用户执行第一操作,任务处理器540被配置为:在每个用户的基础上,将执行操作推迟选择数目的工作周期。在图5所示的示例中,任务处理器540包括推迟计算器542,其被配置为生成一个或多个任务推迟命令548,任务推迟命令548被发送到任务管理器550中包括的任务调度器570。在一些示例中,在第一操作的批运行期间产生任务推迟命令548。任务管理器550被配置为维持针对多个用户和一个或多个任务的推迟调度562。任务调度器570被配置为:基于任务推迟命令548,更新推迟调度562的对应部分。
图6图示了示例推迟调度600。推迟调度600维持和编码针对多个(M个)任务(被标记为任务1-任务M)和N个实体(被标记为实体1-实体N)的推迟。在该示例中,实体中的每个实体对应于一个或多个服务510的用户,例如用户数据530中包括的用户。在该特定实施方式中,针对任务和实体的每个组合,推迟调度600将推迟参数640编码为单个字节,其中触发事件标志642被编码为单个位,并且推迟时间644使用推迟参数640的剩余七位被编码。通过将推迟参数640编码为单个字节,在一些实施方式中,这允许推迟调度600和/或推迟调度600的一部分的副本被维持在任务管理器550的易失性存储器中,从而允许更快速地处理推迟调度600。在图6中,为针对实体N的任务2显示了值“10011010”。该值的最低有效7位(其编码推迟时间644)指示:针对实体N,任务2应当被推迟,直到与实体N相关联的任务2的最近一次发起之后的任务2的26个工作周期为止。例如,如果针对任务2,每日工作周期发生,并且任务2在12月01日与实体N相关联地最后发起,则推迟时间644指示任务2将在12月27日发生。对应于触发事件标志642的最高有效位中的值“1”指示:响应于事件被报告给用于针对实体N的任务2的任务管理器550,推迟时间644被事件处理器560改写为“00000001”,这使得任务调度器570在任务2的下一个工作周期中执行针对实体N的任务2。作为示例,如果任务2在12月01日与实体N相关联地被执行,并且在任务2的12月05日和12月06日批运行之间接收到这样的事件,则任务2将在12月06日与实体N相关联地被执行。这会在12月29日之前加速执行,否则将会根据推迟时间644发生。
回到图5,任务管理器550包括任务发起器566,其被配置为:根据推迟调度562和先前任务发起568的记录,针对实体和任务的各种组合,向任务处理器540发出任务开始命令546,以使受影响的实体将被包括在任务中的每个任务的下一个工作周期中执行的处理中。任务管理器550还包括事件处理器560,其被配置为从服务510接收事件。所接收的事件中的每个事件标识一个或多个任务和一个或多个实体,服务510检测到针对该一个或多个任务和一个或多个实体的事件。对于推迟调度562指示这样的事件将被处理为用于加速推迟的触发器的任务和实体,事件处理器560被配置为:经由推迟调度562向任务发起器566指示:应当在每个任务的下一个工作周期中为这些实体执行这些任务。在图5中,工作处理器520包括事件检测器524,其被配置为:作为处理工作项502的一部分,检测触发事件的发生并且向事件处理器560报告诸如事件542。在一些实施方式中,任务管理器550可以被包括在服务510中。
现在参考图7,流程图图示了调度作业矩阵的可能布置。如前所述,调度任务管理器可以维持“N×M”矩阵,其中‘N’是实体的数目,M是调度作业的数目。矩阵的每个单元是1个字节,其中八位字节的最高有效位表示:如果针对该实体的触发事件发生,调度作业是否要被调用或发起,剩余7位表示作业将被推迟的工作周期的数目。如图7中所示,在调度作业702将被静态调度710的情况下,该作业将在下一个工作周期中被处理(第一配置720)。简单地为了清楚起见,针对第一配置720描绘了第一字节二进制表示722。可以观察到,第一字节二进制表示722的第一位(MSB)被指定为“0”或零。这指示动态推迟处于禁用状态740。如由第一字节二进制表示722的二进制数的序列表示的,如果第一配置720被选择,则作业被调度为在下一个或后续(即将到来的)工作周期期间发生。
相比之下,在调度作业702将被动态推迟的情况下,作业可以被配置为按照混合方法750执行,并且在某个指定数目的工作周期和/或触发事件之后被处理(第二配置770),或经由单一动态方法760执行,如由第三配置730和第四配置780表示的。如图7中所示,第三配置730指代其执行被推迟“N”数目的周期的作业,并且第四配置780指代仅响应于检测到触发事件而被执行的作业。
因此,在针对第三配置730描绘第二字节二进制表示732的情况下,可以观察到,第二字节二进制表示732的第一位(MSB)被指定为“0”或零,这指示任务处理器不响应于触发事件而执行任务。此外,第二字节二进制表示的二进制数732指示,作业被调度为在10个工作周期之后发生,使得动态推迟处于启用状态790。
简单地为了清楚起见,针对第二配置770描绘了第三字节二进制表示772,并且针对第四配置780描绘了第四字节二进制表示782。可以观察到,每个字节二进制表示772和782的第一位(MSB)被指定为‘1’或一。这指示,任务处理器将在触发事件之后发起任务的执行(动态推迟处于启用状态790)。因此,如由第三字节二进制表示772的二进制数的序列表示的,如果第二配置770被选择,则作业被调度为在10个工作周期之后或响应于触发事件而发生,而第四字节二进制表示782的二进制数(7个‘1’的序列)指示作业被调度为仅响应于触发事件而发生。当潜在的触发事件发生时,系统审阅针对该实体的矩阵中每个调度作业字节二进制表示(单元)的最高有效位。如果系统发现最高有效位被设置为1,则系统继续评估该作业的触发过滤器或条件。如果评估返回“真”,则单元可以被标记为00000001,这表示它应当在下一个工作周期中被拾取。相反,如果最高有效位被设置为0,则系统将忽略该单元。
图8是图示用于以平衡存储器使用和任务执行的方式调度作业的计算机实现方法800的实施方式的流程图。方法800包括接收第一指示的第一步骤810,第一指示为要在分布式计算环境中被执行的第一作业被动态推迟,直到触发事件发生为止。方法800还包括:在第一工作周期期间检测触发事件的首次发生的第二步骤820。此外,方法800包括:响应于检测到触发事件的首次发生,在紧跟在第一工作周期之后的第二工作周期期间,发起第一作业的首次执行(performance)或执行(execution)。
在其他实施方式中,可以包括附加步骤。例如,在一些实施方式中,第一指示被存储在包括八位的第一八位字节的二进制表示的最高有效位中,其中MSB被设置为1或等于1。在另一个示例中,方法可以包括:接收第一作业被调度为当包括预先选择或经动态确定的数目的工作周期的序列已经过去时被执行的第二指示,然后确定包括经动态确定的数目的工作周期的第一序列已经过去。在这样的情况下,第一序列从初始工作周期延伸到最终工作周期。方法还可以包括:响应于确定第一序列已经过去,在紧跟在最终工作周期之后(即,直接在其之后)的第二工作周期期间,发起第一作业的第二次执行(performance)或执行(execution)。
在不同的实施方式中,初始工作周期紧跟在第二工作周期之后发生。在一个实施方式中,第一八位字节包括七个剩余位,七个剩余位被配置为存储关于针对第一作业的动态确定的调度的信息。在另一个示例中,方法还包括:在第三工作周期期间检测触发事件的第二次发生,并且响应于检测到触发事件的第二次发生,在紧跟在第三工作周期之后的第四工作周期期间,发起第一作业的第二次执行(performance)或执行(execution)。在一些情况下,第三工作周期和第二工作周期指代同一工作周期,而在其他一些情况下,第四工作周期与第二工作周期间隔开至少一个工作周期。在一些实施方式中,第四工作周期与第二工作周期间隔开至少两个工作周期(即,每个任务执行事件之间必须有一个工作周期)。
在一些实施方式中,第一八位字节的八位中的每个位被设置为一或等于一。在这样的情况下,第一作业的执行仅响应于检测到触发事件而发生。在另一个示例中,方法还可以包括接收第二指示的步骤,第二指示是在分布式计算环境中要被执行的第二作业被周期地调度,其中第二指示由包括八位的第二八位字节的二进制表示来表示,其中最低有效位被设置为一或等于一,并且第二八位字节的剩余七位被设置为零或等于零。在另一个实施方式中,第二指示是在五个工作周期之后动态地执行第二作业。作为示例,第一指示由被初始设置为“11111111”的存储值表示,这指示作业仅在触发事件发生时才应当被调度。然后通过表示“10000101”,第二指示可以被配置为在5个工作周期或触发事件发生之后调度作业,其中最高有效位(最左边的位)为1,并且表示监听触发事件,剩余7位表示十进制数5。
因此,如本文所述,动态推迟系统和方法提供了按照工作周期的数目以及响应于触发事件的发生,来推迟任务的执行的手段。通过根据工作周期的数目推迟调度,减少了存储器占用,因为它只使用一个字节来存储该数目,而不是存储下一个处理时间的时间戳,这会占用更多存储器。该方法还利用字节的最高有效位来指示调度作业是否要响应于触发事件而被调用。
为了描述的简单起见,本文没有提供用于执行各个步骤的细节。本公开的实施方式可以利用Calder等人的在2013年07月11日公开、题目为“Paas hierarchial schedulingand auto-scaling”的美国专利公开号2013/0179895以及Das等人的在2018年08月28日授权、题目为“Dynamic allocation of resources while considering resourcereservations”的US专利号10063491中描述的任何的特征、系统、组件、设备和方法。
结合图1-图8所描述的系统、设备和技术的详细示例在本文被呈现用于说明本公开及其利益。这样的使用示例不应被解释为对本公开的逻辑过程实现的限制,也不应将与本文所述的那些用户接口方法的变化视为超出本公开的范围。在一些实施方式中,图1-图8中所描述的各种特征在各自的模块中实现,也可以被称为和/或包括逻辑、组件、单元和/或机制。模块可以构成软件模块(例如,包含在机器可读介质上的代码)或硬件模块。
在一些示例中,硬件模块可以机械地、电子地或以其任何合适的组合而被实现。例如,硬件模块可以包括被配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以包括专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路,并且可以包括机器可读介质数据的部分和/或用于这样的配置的指令。例如,硬件模块可以包括包含在被配置为执行一组软件指令的可编程处理器内的软件。应当理解,在专用和永久配置的电路中或在临时配置的电路中(例如,由软件配置)机械地实现硬件模块的决定可能由成本、时间、支持和工程考虑而被驱动。
因此,短语“硬件模块”应被理解为包含能够执行某些操作并且可以以某种物理方式配置或布置的有形实体,是物理构造的、永久配置的(例如,硬连线的)的实体,和/或临时配置(例如,编程)以某种方式操作或执行本文描述的某些操作。如本文所用,“硬件实现的模块”是指硬件模块。考虑临时配置(例如,编程)硬件模块的示例,不需要每个硬件模块在任何一个实例中及时被配置或实例化。例如,在硬件模块包括通过软件被配置为为专用处理器的可编程处理器的情况下,该可编程处理器可以在不同的时间分别配置成不同的专用处理器(例如,包括不同的硬件模块)。软件可以相应地配置一个或多个特定处理器,例如以在一个时间实例构成特定硬件模块并且在不同时间实例构成不同硬件模块。使用一个或多个处理器实现的硬件模块可以被称为“处理器实现”或“计算机实现”。
硬件模块可以向其他硬件模块提供信息以及从其他硬件模块接收信息。因此,所描述的硬件模块可以被认为是通信耦合的。存在多个硬件模块的地方同时,可以通过两个或多个硬件模块之间的信号传输(例如,通过适当的电路和总线)来实现通信。在多个硬件模块在不同时间被配置或实例化的实施方式中,这些硬件模块之间的通信可以例如通过在多个硬件模块可以访问的存储器设备中的信息的存储和检索来被实现。例如,一个硬件模块可以执行操作并将输出存储在存储器设备中,然后另一个硬件模块可以访问存储器设备以检索和处理所存储的输出。
在一些示例中,方法的至少一些操作可以由一个或多个处理器或处理器实现的模块而被执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(SaaS)。例如,至少一些操作可以由和/或在多台计算机(作为包括处理器的机器的示例)而被执行,这些操作可经由网络(例如,互联网)和/或经由一个或多个软件接口(例如,应用程序接口(API))而被访问。某些操作的性能可能被分布在处理器之间,不仅驻留在单个机器内,而且部署在多个机器上。处理器或处理器实现的模块可以位于单个地理定位(例如,在家庭或办公室环境中,或服务器农场中),或者可以被分布在多个地理定位。
图9图示了示例软件架构902的框图900,其各个部分可以结合本文所描述的各种硬件架构被使用,这些硬件架构可以实现上述功能中的任一个。图9是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以支持本文所描述的功能。软件架构902可以在硬件上执行,诸如图1A的设备,包括文档存储装置1070、处理器、存储器和输入/输出(I/O)组件。典型硬件层904被图示并且可以表示例如图1的设备150。典型硬件层904包括处理单元906和相关联的可执行指令908。可执行指令908表示软件架构902的可执行指令,包括本文描述的方法、模块等的实现。硬件层904还包括存储器/存储装置910,还包括可执行指令908和伴随的数据。硬件层904还可以包括其他硬件模块912。处理单元908持有的指令908可以是存储器/存储装置910持有的指令908的部分。
示例软件架构902可以被概念化为层,每个层提供各种功能。例如,软件架构902可以包括层和组件,诸如操作系统(OS)914、库916、框架918、应用920和呈现层944。在操作上,层内的应用920和/或其他组件可以调用API调用924到其他层并且接收相应的结果926。被图示的层本质上是典型的,并且其他软件架构可以包括附加的或不同的层。例如,某些移动或特殊用途的操作系统可能不提供框架/中间件918。
操作系统914可以管理硬件资源并提供公共服务。操作系统914可以包括例如内核928、服务930和驱动932。内核928可以充当硬件层904和其他软件层之间的抽象层。例如,内核928可以负责存储器管理、处理器管理(例如调度)、组件管理、网络、安全设置等。服务930可以为其他软件层提供其他公共服务。驱动932可以负责控制底层硬件层904或与底层硬件层904接口。例如,驱动932可以包括显示驱动、相机驱动、存储器/存储设备驱动、外围设备驱动(例如,经由通用串行总线(USB))、网络和/或无线通信驱动、音频驱动等,具体取决于硬件和/或软件配置。
库916可提供可以由应用920和/或其他组件和/或层使用的公共基础设施。库916通常提供供其他软件模块使用以执行任务的功能,而不是直接与操作系统914交互。库916可以包括可以提供诸如存储器分配、字符串操作、文件操作等功能的系统库934(例如,C标准库)。此外,库916可以包括API库936,诸如介质库(例如,支持图像、声音和/或视频数据格式的呈现和操作)、图形库(例如,用于在显示器上渲染2D和3D图形的OpenGL库)、数据库库(例如,SQLite或其他关系数据库函数)和网络库(例如,可能提供网络浏览功能的浏览器)。库916还可以包括多种其他库938,以为应用920和其他软件模块提供许多功能。
框架918(有时也称为中间件)提供可以由应用920和/或其他软件模块使用的更高级别的公共基础设施。例如,框架918可以提供各种图形用户接口(GUI)功能、高级资源管理或高级定位服务。框架918可以为应用920和/或其他软件模块提供广泛的其他API。
应用920包括内置应用940和/或第三方应用942。内置应用940的示例可以包括但不限于联系人应用、浏览器应用、定位应用、介质应用、消息应用和/或游戏应用。第三方应用942可以包括由除特定平台的供应商之外的实体开发的任何应用。应用920可以使用经由OS914、库916、框架918和呈现层944可用的功能来创建用户接口以与用户交互。
一些软件架构使用虚拟机,如由虚拟机948所示。虚拟机948提供了一个执行环境,其中应用/模块可以像在硬件机器(例如,图10的机器1000)上执行一样执行。虚拟机948可以由主机操作系统(例如,操作系统914)或管理程序托管,并且可以具有管理虚拟机948的操作和与主机操作系统的互操作的虚拟机监视器946。不同于虚拟机外部的软件架构902的软件架构可以在虚拟机948内执行,诸如操作系统950、库952、框架954、应用956和/或呈现层958。
图10图示了示例机器1000的组件的框图,该示例机器1000被配置为从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所描述的任何功能。示例机器1000是计算机系统的形式,其中可以执行用于使得机器1000执行本文所描述的任何功能的指令1016(例如,以软件组件的形式)。因此,指令1016可用于实现本文所描述的模块或组件。指令1016使得未编程和/或未配置的机器1000作为被配置为执行所描述的特征的特定机器来操作。机器1000可以被配置为作为独立设备操作或者可以耦合(例如,联网)到其他机器。在联网部署中,机器1000可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力运行,或者作为对等或分布式网络环境中的节点运行。机器1000可以体现为,例如,服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、游戏机和/或娱乐系统、智能电话、移动设备、可穿戴设备(例如,智能手表)和物联网(IoT)设备。此外,虽然仅示出了单个机器1000,但术语“机器”包括单独或联合执行指令1016的机器的集合。
机器1000可以包括处理器1010、存储器1030和I/O组件1050,它们可以经由例如总线1002被通信耦合。总线1002可以包括经由各种总线技术和协议耦合机器1000的各种元件的多条总线。在示例中,处理器1010(包括,例如,中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、ASIC或其合适的组合)可以包括一个或多个处理器1012a至1012n,其可以执行指令1016并且处理数据。在一些示例中,一个或多个处理器1010可以执行由一个或多个其他处理器1010所提供或标识的指令。术语“处理器”包括多核处理器,其包括可以同时执行指令的核。虽然图10示出了多个处理器,机器1000可以包括具有单核的单个处理器,具有多个内核的单个处理器(例如,多核处理器)、每个具有单个内核的多个处理器、每个具有多个内核的多个处理器,或者它们的任意组合。在一些示例中,机器1000可以包括分布在多个机器中的多个处理器。
存储器/存储装置1030可以包括主存储器1032、静态存储器1034或其他存储器,以及存储单元1036,两者都可被处理器1010访问,诸如经由总线1002。存储单元1036和存储器1032、存储器1034存储体现本文描述的任何一个或多个功能的指令1016。存储器/存储装置1030还可以为处理器1010存储临时的、中间的和/或长期的数据。指令1016还可以完全或部分地驻留在存储器1032、存储器1034内、存储单元1036内、处理器1010中的至少一个处理器内(例如,在命令缓冲器或高速缓冲存储器内)、在至少一个I/O组件的存储器内,或其任何合适的组合,在其执行期间。因此,存储器1032、存储器1034、存储单元1036、处理器1010中的存储器和I/O组件1050中的存储器是机器可读介质的示例。
如本文所使用的,“机器可读介质”是指能够临时或永久地存储使机器1000以特定方式操作的指令和数据的设备。此处使用的术语“机器可读介质”不包括瞬态电或电磁信号本身(例如在通过介质传播的载波上);因此,术语“机器可读介质”可以被认为是有形的和非暂态的。非暂态有形机器可读介质的非限制性示例可包括但不限于非易失性存储器(诸如闪存或只读存储器(ROM)),易失性存储器(例如静态随机存取存储器(RAM)或动态RAM)、缓冲存储器、高速缓存存储器、光存储介质、磁存储介质和设备、网络可访问或云存储,其他类型的存储设备和/或其任何合适的组合。术语“机器可读介质”适用于单个介质或多个介质的组合,用于存储由机器1000执行的指令(例如,指令1016),使得指令当由机器1000的一个或多个处理器1010执行时,使机器1000执行本文描述的一个或多个功能。因此,“机器可读介质”可以指单个存储设备,以及包含多个存储装置或设备的“基于云”存储系统或存储网络。
I/O组件1050可以包括适合于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量等的多种硬件组件。特定机器中包括的特定I/O组件1050将取决于机器的类型和/或功能。例如,移动电话等移动设备可能包括触摸输入设备,而无领导服务器或物联网设备可能不包括这样的触摸输入设备。图10中所示的I/O组件的特定示例绝不是限制性的,并且其他类型的组件可以包括在机器1000中。I/O组件1050的分组仅仅是为了简化该讨论,并且分组决不是限制性的。在各种示例中,I/O组件1050可以包括用户输出组件1052和用户输入组件1054。用户输出组件1052可以包括,例如,用于显示信息的显示组件(例如,液晶显示器(LCD)或投影仪)、声学组件(例如,扬声器)、触觉组件(例如,振动电机或力反馈设备),和/或其他信号生成器。用户输入组件1054可以包括例如字母数字输入组件(例如,键盘或触摸屏)、指点组件(例如,鼠标设备、触摸板或另一指点工具),和/或触觉输入组件(例如,提供定位和/或触摸力或触摸手势的物理按钮或触摸屏),被配置用于接收各种用户输入,诸如用户命令和/或选择。
在一些示例中,I/O组件1050可以包括生物特征组件1056和/或位置组件1062,以及其他环境传感器组件的广泛阵列。生物特征组件1056可以包括例如用于检测身体表情(例如,面部表情、声音表情、手部或身体姿势或眼睛跟踪)的组件,测量生物信号(例如,心率或脑电波),并且标识个人(例如,经由基于语音、视网膜和/或面部的标识)。位置组件1062可以包括例如定位传感器(例如,全球定位系统(GPS)接收器)、高度传感器(例如,可以从中导出高度的气压传感器)和/或方向传感器(例如,磁力计)。
I/O组件1050可以包括通信组件1064,其实现了多种技术,可操作以将机器1000经由相应的通信耦合1072和1082耦合到(多个)网络1070和/或(多个)设备1080。通信组件1064可以包括一个或多个网络接口组件或其他合适的设备以与(多个)网络1070进行接口。通信组件1064可以包括例如适于提供有线通信、无线通信、蜂窝通信、近场通信(NFC)、蓝牙通信、Wi-Fi和/或经由其他模态的通信的组件。(多个)设备1080可以包括其他机器或各种外围设备(例如,经由USB耦合)。
在一些示例中,通信组件1064可以检测标识符或包括适于检测标识符的组件。例如,通信组件1064可以包括射频标识(RFID)标签阅读器、NFC检测器、光学传感器(例如,一维或多维条形码,或其他光学代码)和/或声学检测器(例如,麦克风以标识经标签的音频信号)。在一些示例中,定位信息可以基于来自通信组件1062的信息来被确定,诸如但不限于经由互联网协议(IP)地址的地理定位、经由Wi-Fi、蜂窝、NFC、蓝牙或其他无线站标识和/或信号三角测量。
尽管已经描述了各种实施方式,但是该描述旨在是示例性的,而不是限制性的,并且应当理解,在这些实施方式的范围内,更多的实施方式和实现也是可能的。尽管在附图中示出并在本详细描述中讨论了许多可能的特征组合,但是所公开的特征的许多其他组合也是可能的。任何实施方式的任何特征都可以与任何其他实施方式中的任何其他特征或元素结合使用或替代任何其他特征或元素,除非特别限制。因此,应当理解,本公开中示出和/或讨论的任何特征可以以任何合适的组合一起实施。因此,除非考虑到所附权利要求及其等同物,否则这些实施方式不受限制。此外,可以在所附权利要求的范围内进行各种修改和改变。
虽然前面已经描述了被认为是最佳模式和/或其他示例的内容,但是可以理解,可以在其中进行各种修改,并且可以以各种形式和示例来实现本文所公开的主题,并且该教导可以应用于许多应用中,这里仅描述了其中的一些。以下权利要求旨在要求保护落入本教导的真实范围内的任何和所有应用、修改和变化。
除非另有说明,本说明书(包括随后的权利要求书)中规定的所有测量值、值、评级、位置、幅度、大小和其他规格均为近似值,而非精确值。它们旨在具有与它们相关的功能以及它们所属领域的惯例一致的合理范围。
保护范围仅由现在随后的权利要求限制。当根据本说明书和随后的审查历史进行解释时,该范围旨在并且应当被解释为与权利要求中使用的语言的普通含义一致并且涵盖所有结构和功能等效物。尽管如此,没有任何权利要求旨在包括未能满足专利法第101、102或103节所要求的主题,也不应以这样的方式解释它们。特此否认对这样的主题的任何无目的性的包括。
除上文所述外,任何已陈述或说明的内容均不旨在或不应被解释为导致将任何组件、步骤、特征、对象、利益、优势或等效物献给公众,无论权利要求书中是否记载。
应当理解,本文中使用的术语和表达具有与这些术语和表达就其相应的相应研究和研究领域相一致的普通含义,除非本文另有说明的特定含义。诸如第一和第二等关系术语可以单独用于将一个实体或动作与另一个实体或动作区分开来,而不必要求或暗示这些实体或动作之间的任何实际的这样的关系或顺序。术语“包括(comprises)”、“包括(comprising)”或其任何其他变体旨在涵盖非排他性包括,使得包括元件列表的过程、方法、制品或装置不仅包括那些元件,还可能包括未明确列出或这样的过程、方法、物品或装置固有的其他元件。以“a”或“an”开头的元件在没有进一步限制的情况下不排除在包括该元件的过程、方法、物品或设备中存在附加的相同元件。
提供本公开的摘要以允许读者快速确定技术公开的性质。摘要被提交的理解是它不会被用于解释或限制权利要求的范围或含义。此外,在上述具体实施方式中,可以看出,为了简化公开的目的,在各种示例中将各种特征组合在一起。本公开方法不应被解释为反映权利要求需要比每项权利要求中明确陈述的特征更多的特征的目的。相反,如以下权利要求所反映的,发明主题在于少于单个公开示例的所有特征。因此,以下权利要求特此并入具体实施方式中,每个权利要求独立作为单独要求保护的主题。

Claims (15)

1.一种数据处理系统,包括:
处理器;以及
包括指令的计算机可读介质,所述指令在由所述处理器执行时,使所述处理器:
接收如下第一指示:在分布式计算环境中要被执行的第一作业被动态推迟直到触发事件发生为止的第一指示;
在第一工作周期期间检测所述触发事件的首次发生;以及
响应于检测到所述触发事件的所述首次发生,在紧跟在所述第一工作周期之后的第二工作周期期间,发起所述第一作业的首次执行。
2.根据权利要求1所述的数据处理系统,其中所述第一指示被存储在包括八位的第一八位字节的二进制表示的最高有效位中,并且所述最高有效位等于一。
3.根据权利要求1所述的数据处理系统,其中所述指令还使所述处理器:
接收所述第一作业被调度为当包括经动态确定的数目的工作周期的序列已经过去时被执行的第二指示;以及
确定包括所述经动态确定的数目的工作周期的第一序列已经过去,其中所述第一序列从初始工作周期延伸到最终工作周期;
响应于确定所述第一序列已经过去,在紧跟在所述最终工作周期之后的第二工作周期期间,发起所述第一作业的第二次执行。
4.根据权利要求3所述的数据处理系统,其中所述初始工作周期紧跟在所述第二工作周期之后发生。
5.根据权利要求2所述的数据处理系统,其中所述第一八位字节包括七个剩余位,所述七个剩余位被配置为存储关于针对所述第一作业的基于静态的调度的信息。
6.根据权利要求1所述的数据处理系统,其中所述指令还使所述处理器:
在第三工作周期期间检测所述触发事件的第二次发生;以及
响应于检测到所述触发事件的所述第二次发生,在紧跟在所述第三工作周期之后的第四工作周期期间,发起所述第一作业的第二次执行。
7.根据权利要求6所述的数据处理系统,其中所述第四工作周期与所述第二工作周期间隔开至少两个工作周期。
8.根据权利要求2所述的数据处理系统,其中:
所述八位中的每个位等于一,并且
所述第一作业的执行仅响应于检测到所述触发事件而发生。
9.根据权利要求1所述的数据处理系统,其中所述指令还使所述处理器:
接收如下第二指示:在分布式计算环境中要被执行的第二作业被静态调度的第二指示,并且
其中所述第二指示由包括八位的第二八位字节的二进制表示来表示,其中最低有效位等于一,并且所述第二八位字节的剩余七位等于零。
10.一种方法,包括:
接收如下第一指示:在分布式计算环境中要被执行的第一作业被动态推迟直到触发事件发生为止的第一指示;
在第一工作周期期间检测所述触发事件的首次发生;以及
响应于检测到所述触发事件的所述首次发生,在紧跟在所述第一工作周期之后的第二工作周期期间,发起所述第一作业的首次执行。
11.根据权利要求10所述的方法,其中所述第一指示被存储在包括八位的第一八位字节的二进制表示的最高有效位中,并且所述最高有效位等于一。
12.根据权利要求10所述的方法,还包括:
接收所述第一作业被调度为当包括经动态确定的数目的工作周期的序列已经过去时被执行的第二指示;以及
确定包括所述经动态确定的数目的工作周期的第一序列已经过去,其中所述第一序列从初始工作周期延伸到最终工作周期;
响应于确定所述第一序列已经过去,在紧跟在所述最终工作周期之后的第二工作周期期间,发起所述第一作业的第二次执行。
13.根据权利要求12所述的方法,其中所述初始工作周期紧跟在所述第二工作周期之后发生。
14.根据权利要求11所述的方法,其中所述第一八位字节包括七个剩余位,所述所述七个剩余位被配置为存储关于针对所述第一作业的动态确定的调度的信息。
15.根据权利要求10所述的方法,还包括:
在第三工作周期期间检测所述触发事件的第二次发生;以及
响应于检测到所述触发事件的所述第二次发生,在紧跟在所述第三工作周期之后的第四工作周期期间,发起所述第一作业的第二次执行。
CN202080039634.1A 2019-05-28 2020-04-20 调度任务的存储器高效动态推迟 Pending CN113892084A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN201941021057 2019-05-28
IN201941021057 2019-05-28
US16/557,050 2019-08-30
US16/557,050 US11106496B2 (en) 2019-05-28 2019-08-30 Memory-efficient dynamic deferral of scheduled tasks
PCT/US2020/029028 WO2020242638A1 (en) 2019-05-28 2020-04-20 Memory-efficient dynamic deferral of scheduled tasks

Publications (1)

Publication Number Publication Date
CN113892084A true CN113892084A (zh) 2022-01-04

Family

ID=73550690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080039634.1A Pending CN113892084A (zh) 2019-05-28 2020-04-20 调度任务的存储器高效动态推迟

Country Status (4)

Country Link
US (1) US11106496B2 (zh)
EP (1) EP3977277A1 (zh)
CN (1) CN113892084A (zh)
WO (1) WO2020242638A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3939221A1 (en) * 2019-03-12 2022-01-19 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Transmitter and receiver, serializer and deserializer and methods for transmitting and receiving, serializing and deserializing

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2269150B1 (zh) * 1974-04-25 1977-10-28 Honeywell Bull Soc Ind
US4275413A (en) * 1978-03-30 1981-06-23 Takashi Sakamoto Linear interpolator for color correction
US4251863A (en) * 1979-03-15 1981-02-17 Sperry Corporation Apparatus for correction of memory errors
US4718090A (en) * 1986-04-14 1988-01-05 Cooper Jr James E Method and apparatus for high-speed processing of video images
US5602826A (en) * 1993-01-19 1997-02-11 Fujitsu Limited Test system in an ATM system
JP3684740B2 (ja) * 1997-01-24 2005-08-17 セイコーエプソン株式会社 Yuv−rgbデジタル変換回路並びにそれを用いた画像表示装置及び電子機器
US20020150100A1 (en) * 2001-02-22 2002-10-17 White Timothy Richard Method and apparatus for adaptive frame fragmentation
US7725897B2 (en) * 2004-11-24 2010-05-25 Kabushiki Kaisha Toshiba Systems and methods for performing real-time processing using multiple processors
US7110411B2 (en) * 2002-03-25 2006-09-19 Erlang Technology, Inc. Method and apparatus for WFQ scheduling using a plurality of scheduling queues to provide fairness, high scalability, and low computation complexity
US20040131088A1 (en) * 2003-01-08 2004-07-08 Adtran, Inc. Shared T1/E1 signaling bit processor
EP1639600A1 (en) * 2003-06-17 2006-03-29 Koninklijke Philips Electronics N.V. Stream file format for dvd-multimedia home platform with stuffing bytes removal
US20050015767A1 (en) * 2003-07-01 2005-01-20 Brian Nash Operating system configuration tool
TWI277027B (en) * 2003-07-28 2007-03-21 Rohm Co Ltd Organic EL panel drive circuit and propriety test method for drive current of the same organic EL element drive circuit
DE10353267B3 (de) * 2003-11-14 2005-07-28 Infineon Technologies Ag Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
US7689687B2 (en) * 2004-07-30 2010-03-30 Fisher-Rosemount Systems, Inc. Communication controller with automatic time stamping
US7721179B2 (en) * 2004-09-15 2010-05-18 Samsung Electronics Co., Ltd. Method and apparatus for encoding/decoding transmission information in mobile telecommunication system
US7950011B2 (en) 2005-10-10 2011-05-24 Oracle International Corporation Leveraging advanced queues to implement event based job scheduling
US7707467B2 (en) * 2007-02-23 2010-04-27 Micron Technology, Inc. Input/output compression and pin reduction in an integrated circuit
US20090070762A1 (en) 2007-09-06 2009-03-12 Franaszek Peter A System and method for event-driven scheduling of computing jobs on a multi-threaded machine using delay-costs
CN101290588B (zh) 2008-03-07 2010-06-16 重庆邮电大学 一种微嵌入式实时任务调度器及调度方法
US8161502B2 (en) * 2008-09-26 2012-04-17 Cadence Design Systems, Inc. Method and apparatus for implementing a task-based interface in a logic verification system
US7876118B2 (en) * 2009-02-05 2011-01-25 Advantest Corporation Test equipment
JP4856736B2 (ja) * 2009-05-18 2012-01-18 株式会社バッファロー 無線通信装置、無線通信システムおよび無線通信方法
US20120079486A1 (en) * 2010-09-23 2012-03-29 International Business Machines Corporation Integration of dissimilar job types into an earliest deadline first (edf) schedule
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same
US9372735B2 (en) 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool
US8954985B2 (en) 2012-06-05 2015-02-10 International Business Machines Corporation Dependency management in task scheduling
US9602426B2 (en) 2013-06-21 2017-03-21 Microsoft Technology Licensing, Llc Dynamic allocation of resources while considering resource reservations
US20150143281A1 (en) * 2013-11-19 2015-05-21 Apple Inc. Notifications and reminders based on user states
JP6117120B2 (ja) * 2014-01-17 2017-04-19 株式会社東芝 イベント管理装置、イベント管理方法およびモータシステム
US10223160B2 (en) * 2015-08-31 2019-03-05 Ayla Networks, Inc. Compact schedules for resource-constrained devices
US10120685B2 (en) * 2015-11-04 2018-11-06 International Business Machines Corporation Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits
US10387195B2 (en) * 2015-11-24 2019-08-20 Informatica Llc Method, apparatus, and computer-readable medium for performing a data exchange on a data exchange framework
US10536891B1 (en) * 2018-06-29 2020-01-14 Texas Instruments Incorporated Using estimated time drift to determine keep alive periodicity in synchronized networks

Also Published As

Publication number Publication date
US11106496B2 (en) 2021-08-31
EP3977277A1 (en) 2022-04-06
US20200379801A1 (en) 2020-12-03
WO2020242638A1 (en) 2020-12-03

Similar Documents

Publication Publication Date Title
US10037423B2 (en) Methods and systems for controlling permission requests for applications on a computing device
EP3414657B1 (en) Automatic graphical user interface generation from notification data
EP3337169B1 (en) Method and device for adjusting resolution of electronic device
US9024747B1 (en) Deferring alert of notifications for a particular time
US20160026698A1 (en) Enabling business process continuity on periodically replicated data
US11599837B2 (en) Method and system for selection of users in feature rollout
EP3340155A1 (en) Electronic device and method for displaying web page using the same
US11314572B1 (en) System and method of data alert suppression
EP4123446A1 (en) Thread management method and apparatus
US10379897B2 (en) Adaptive job scheduling utilizing packaging and threads
US11106496B2 (en) Memory-efficient dynamic deferral of scheduled tasks
US20230153133A1 (en) System and Method of Providing Access to and Managing Virtual Desktops
CN113592506B (zh) 重复支付处理方法、装置、电子设备和存储介质
US11086669B2 (en) System and method for sorting and scheduling workflows
US20180374013A1 (en) Service architecture for dynamic block appointment orchestration and display
US20220357932A1 (en) Dependency-based automated data restatement
US12045258B2 (en) System and method of providing conditional copying of data
US20240176609A1 (en) Method and system for implementing safe deployment of features
US20240069697A1 (en) System and method of rendering user interface components based on user interaction
US20220405714A1 (en) Scheduling a Workforce for a Forecasted Event According to Timing of the Forecasted Event
US20230106021A1 (en) Method and system for providing customized rollout of features
CN117999543A (zh) 分配计算设备资源
CN114896013A (zh) 页面加载时长确定方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination