CN1770157A - 效率得到提高的读取-复制更新系统和方法 - Google Patents

效率得到提高的读取-复制更新系统和方法 Download PDF

Info

Publication number
CN1770157A
CN1770157A CNA2005101086871A CN200510108687A CN1770157A CN 1770157 A CN1770157 A CN 1770157A CN A2005101086871 A CNA2005101086871 A CN A2005101086871A CN 200510108687 A CN200510108687 A CN 200510108687A CN 1770157 A CN1770157 A CN 1770157A
Authority
CN
China
Prior art keywords
grace period
period detection
update request
condition
update
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.)
Granted
Application number
CNA2005101086871A
Other languages
English (en)
Other versions
CN100412865C (zh
Inventor
保罗·麦肯尼
奥兰·Y.·克里格
乔纳森·阿帕沃
迪潘卡·萨马
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1770157A publication Critical patent/CN1770157A/zh
Application granted granted Critical
Publication of CN100412865C publication Critical patent/CN100412865C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

用于管理针对共享数据单元的延迟更新的请求,同时最小化与确定是否已经移除了预先存在的针对数据单元的引用相关的宽限期检测管理成本的方法,系统和计算机程序产品。在不执行宽限期检测处理的情况下,缓冲适合宽限期检测的多个更新请求。当缓冲更新请求时,监视能保证宽限期检测处理的开始的一个或多个条件。如果得到这样的条件的保证,相对于更新请求执行宽限期检测,使得能处理这些更新请求。这样,可以在多个更新请求上分摊宽限期检测管理成本,同时保持对保证促使宽限期检测的条件的敏感。

Description

效率得到提高的读取-复制更新系统和方法
技术领域
本发明涉及计算机系统和方法,其中,在保持与每个并发数据消费者相关的数据完整性和一致性的同时,在这些消费者中共享数据资源。更准确地,本发明涉及对被称为“读取-复制更新”的互斥机制的改进,在该机制中无锁定数据读取操作与数据更新操作并发地执行。
背景技术
作为背景技术,读取-复制更新是一种互斥技术,其容许为不使用锁地进行读取而访问共享数据,对共享存储器进行写入,存储器屏蔽,原子指令,或者其他计算代价昂贵的同步机制,同时仍然容许并发地更新(修改,删除,插入,等等)数据。此技术非常适合于多处理器计算环境,其中,访问共享数据集的读操作(读取方)的数量与更新操作(更新方)的数量相比较大,并且其中,使用其他互斥技术(例如,锁)进行每次读操作的管理开销成本会较高。作为示例,至多每隔几分钟便更新一次但每秒被搜索数千次的网络路由表是这样一种情形,其中读侧锁的获取会是负担沉重的。
读取-复制更新技术通过两个阶段实现。在第一(初始更新)阶段,以暂时保留正被更新的数据的两个视图的方式执行实际的数据更新。一个视图是旧(更新之前)的数据状态,维护它是为了当前可能正引用数据的操作的利益。另一个视图是新(更新之后)的数据状态,它可用于访问更新之后的数据的操作的利益。在第二(延迟更新)阶段,在“宽限期”之后删除旧数据状态,宽限期足够长,以便确保所有正执行操作不再保持对更新之前的数据的引用。
图1A-1D图解了使用读取-复制更新修改数据单元A,B和C的组中的数据单元B。数据单元A,B和C被排列在以非循环方式遍历的单链表中,除了存储某项数据之外,每个单元包含有指向列表中下一单元的指针(或者针对最后单元的空指针)。全局指针(没有示出)被假定为指向数据单元A,即列表的第一成员。本领域的技术人员将理解,可以使用各种常规编程构造中的任何构造来实现数据单元A,B和C,包括但不限于由C语音“struct”变量定义的数据结构。
假定图1A至图1D的数据单元列表被多个并发读取方遍历(无锁定),并有时由更新方更新,即删除,插入,或者修改列表中的数据单元。在图1A中,读取方r1正引用数据单元B,如数据单元B之下的竖箭头所示。在图1B中,更新方u1希望通过修改数据单元B来更新链表。不同于不考虑r1正引用此数据单元的事实而简单地更新此数据单元(这可能使r1崩溃),u1在生成B的更新版本(在图1C中,此数据单元为B′)的同时保留B,并将该更新版本插入链表中。这通过由u1通过获得旋转锁(spinlock),为B′分配新存储器,复制B的内容到B′,按需修改B′,更新从A到B的指针以使指针指向B′,并释放旋转锁来实现。所有随后的(更新后)遍历链表的读取方,例如,读取方r2,将因此通过遇到B′而看见更新操作的效果。另一方面,因为保留了B的初始版本和指向C的指针,旧的读取方r1将不受影响。尽管r1现在正读取失效数据,然而在许多情况中可以容忍这种状况,例如,当数据单元跟踪计算机系统的外部部件状态(例如,网络连接性)并由于通信延迟而必须容忍旧数据时。
在更新之后的某个随后时间,r1将继续其对链表的遍历并将其对B的引用移开。此外,存在这样的时刻,此时没有其他读取方进程被授权访问B。此时刻表示上述宽限期的过期,即u1能释放B,如图1D所示。
图2A-2C图解了使用读取-复制更新在数据单元A,B和C的单链表中删除数据单元B。如图2A所示,假定当前读取方r1正引用B,而更新方u1希望删除B。如图2B所示,更新方u1更新从A指向B的指针,使得现在A指向C。这样,r1不会被干扰,但随后的读取方r2看到删除的影响。如图2C所示,随后,r1会随后将其对B的引用移开,从而容许在宽限期期满后释放B。
在读取-复制更新机制的环境中,宽限期代表这样的点,此时访问受读取-复制更新的保护的数据单元的所有运行的进程均已经过“静止状态”,在此状态下它们不再能够保持对数据单元的引用,声明对数据单元的锁定,或作出关于数据单元状态的任何假设。通常,对于操作系统内核代码路径,上下文(进程)切换,空闲循环,和用户模式执行,都表示任何给定CPU的静止状态(如同将不在这里列出的其他操作)。
在图3中,运行在四个独立CPU上的四个进程0,1,2和3被示出为周期性地通过静止状态(通过双竖条表示)。宽限期(通过点竖线表示)包括所有四个进程已经通过一个静止状态的时帧。如果四个进程0,1,2和3是遍历图1A-1D或者图2A-2C的链表的读取方进程,则在宽限期之后,引用宽限期之前的旧数据单元B的这些进程没有一个进程能保护对旧数据单元B的引用。通过跟随由更新方插入的链接,由这些进程执行的所有宽限期后的搜索均会绕过B。
可以使用多种方法实现宽限期后的延迟数据更新,包括但不限于使用回调处理,如被转让给共同受让人的美国专利5,727,209,“Apparatus And Method For Achieving Reduced OverheadMutual-Exclusion And Maintaining Coherency In A MultiprocessorSystem Utilizing Execution History And Thread Monitoring”中所说明的。在这里将美国专利5,727,209引为参考。
回调处理技术考虑到,共享数据单元的更新方将执行初始(第一阶段)数据更新操作,该操作创建被更新的数据的新视图,之后,指定用于执行延迟(第二阶段)数据更新操作的回调函数,该操作将所更新的数据的旧视图移除。更新方将在读取-复制更新子系统上注册回调函数(之后被称为回调),以便能在宽限期结束时执行。读取-复制更新子系统跟踪每个处理器的待执行回调,并监视每个处理器的静止状态活动,以检测当前宽限期何时期满。当当前宽限期期满时,执行所有已经准备好处理的预定回调。
因为宽限期检测消耗处理周期,除非在读取-复制更新子系统中存在待执行的回调,否则不希望导致这样的管理成本。此外,每个宽限期处理的待执行回调的数量越大,则能够更有效地分摊的宽限期检测的管理成本。另一方面,回调处理有时是紧急的,例如在存储器不足条件期间,其中,能通过移除旧数据来释放存储器。在此情况中,形势表明不考虑宽限期检测管理成本地促使进行回调处理是恰当的。
本发明的目的是解决上述问题。尤其是,需要一种新的读取-复制更新技术,其实现在多个回调上分摊宽限期检测,同时保持对紧急回调条件的敏感的目标。
发明内容
通过用于管理针对共享数据单元的延迟更新的请求(例如,回调,如果在基于回调的读取-复制更新系统中实现本发明),同时最小化与确定是否已经移除了预先存在的针对数据单元的引用相关的宽限期检测管理成本的方法,系统和计算机程序产品,解决以上问题并得到本技术领域的进步。根据本发明的示例性实施例,在不执行宽限期检测处理的情况下,缓冲适合宽限期检测的多个更新请求。当缓冲更新请求时,监视能保证宽限期检测处理的开始的一个或多个条件。如果得到这样的条件的保证,相对于更新请求执行宽限期检测,使得能处理这些更新请求。这样,可以在多个更新请求上分摊宽限期检测管理成本,同时保持对保证促使宽限期检测的条件的敏感。
在本发明的另一示例性实施例中,被监视的条件可以是以下条件中的一个或多个:(1)所缓冲的更新请求达到阈值数量,(2)所缓冲的更新请求被缓冲了阈值时间周期,(3)所缓冲的更新请求包括被指定为紧急的更新请求,(4)遇到存储器不足事件,以及(5)针对一存储器类型遇到存储器不足事件并且而所缓冲的更新请求包括对应于该存储器类型的更新请求。
可以以各种方式识别条件,包括根据与一个更新请求相关的显式指示器进行识别。当调用与更新请求相关的函数时,能作为参数传递显式指示器。可选地,可以通过使用预先指定的更新请求函数调用的更新请求来生成指示器。
可以在队列中缓冲更新请求,该队列与读取-复制更新子系统内的现有队列是分别的,或者可以在现有队列之一中缓冲更新请求。在第一个实施例中,可以在分级队列上缓冲所缓冲的更新请求,然后,在出现宽限期检测处理的保证条件时,将更新请求转移到读取-复制更新子系统中的现有队列。在第二个实施例中,可以在读取-复制更新子系统内的现有队列之一缓冲更新请求,并保持更新请求,直到出现保证宽限期检测处理的条件。例如,读取-复制更新子系统可以包括等待宽限期期满的更新请求的第一队列,以及等待在第一队列中的更新请求的处理的更新请求的第二队列。可以在第二队列缓冲更新请求,然后,在保证宽限期检测处理的条件出现时,将更新请求转移到第一队列。
附图说明
通过如下面如附图中所图解的的本发明示例性实施例的更具体描述,能够明白本发明的上述和其他特征和优点,其中:
图1A到图1D是经历根据常规读取-复制更新机制的数据单元替换的数据单元的链表的图表表示;
图2A到图2C是经历根据常规读取-复制更新机制的数据单元删除的数据单元的链表的图表表示;
图3是图解宽限期的流程图,其中,四个进程通过静止状态;
图4是示出多处理器计算环境的功能模块图,其表示可在其中实施本发明的示例性环境;
图5是示出根据本发明第一示例性实施例的读取-复制更新子系统的功能模块图;
图6是示出根据本发明第二示例性实施例的读取-复制更新子系统的功能模块图;
图7是示出可以根据本发明实现的示例性处理逻辑的流程图;而
图8是存储介质的图解,可以用其存储计算机程序产品,用于实现根据本发明的读取-复制更新宽限期检测功能。
具体实施方式
现在参照附图,其中,在全部几个视图中,类似的附图标记代表类似的单元,图4图解了可以实现本发明的示例性计算环境。尤其是,示出了对称多处理器(SMT)计算系统2,其中,通过公共总线6,多个处理器41,42…4n被连接到共享存储器8。常规的高速缓冲存储器101,102…10n和高速缓存控制器121,122…12n分别与每个处理器41,42…4n相关。常规存储器控制器14与共享存储器8相关联。假定由适于在SMT环境中使用的单个多任务操作系统来管理计算系统2。
还假定,在内核或者用户模式进程,线程(或者在其他执行上下文内)内执行的更新操作将对共享存储器8中所存储的共享数据集16周期性地执行更新。附图标记181,182…18n表示可以对若干处理器41,42…4n周期性地执行的各个数据更新操作(更新方)。如上述背景技术部分所说明的,数据更新方181,182…18n执行的更新可以包括修改链表的单元,将新单元插入链表,从链表中删除单元,以及许多其他类型的操作。为了利于这样的更新,若干处理器41,42…4n被编程为通过周期性地执行各个读取-复制更新实例201,202…20n来将读取-复制更新(RCU)子系统20实现为其操作系统功能的一部分。尽管没有在附图中示出,然而处理器41,42…4n也对共享数据组16周期性地执行读取操作。这样的读取操作基本上比更新操作执行得更频繁,这是使用读取-复制更新的一个前提。
如图5所示,读取-复制更新子系统20包括回调注册部件22,作为其功能的一部分。回调注册部件22起到针对读取-复制更新子系统20的API(应用程序接口)的作用,更新方181,182…18n可以调用该API,以在更新方自身执行初始(第一阶段)更新之后,注册针对数据单元延迟(第二阶段)更新的请求。如本领域技术人员所知的,这些更新请求涉及失效数据单元的移除,并将被处理为读取-复制更新子系统20内的回调。读取-复制更新子系统20另外包括宽限期检测部件24和回调处理部件26,对于那些熟悉读取-复制更新的技术人员,两者都能根据任何已知的技术实现。
读取-复制更新子系统20还维护一组一个或多个回调队列28,其中回调注册部件22和回调处理部件26操作所述回调队列28。可以使用共享全局数组来实现回调队列集28,共享全局数组跟踪由每个更新方181,182…18n注册的回调。可选地,每个读取-复制更新子系统实例201,202…20n能在相应的一个高速缓冲存储器101,102…10n中维护数组,该数组定义了每个处理器队列集。在任一情况中,当注册这样的回调时,回调注册部件22将新回调追加(或者预先追加)到回调队列集28中的队列中。回调处理部件26负责执行回调队列组28中引用的回调,并负责从中移除被处理的回调。
如美国专利5,727,209(以上所引用的)所公开的,可以使用管理回调的两个队列28a和28b实现队列集28。队列28a是当前阶段队列,其规定了在当前宽限期结束时的适合处理的回调。队列28b是用于累积回调的下一阶段队列,这些回调不会变得适合宽限期处理,直到当前宽限期之后的下一个宽限期的结束。根据常规回调排队,在下一阶段队列28b上累积由回调注册部件22注册的新回调。新回调不能被添加到当前阶段队列28a上,因为此队列只用于自从当前宽限期的开始已经等待处理的回调。只有那些回调适于在当前宽限期结束时处理。
如果考虑到宽限期代表其中所有处理器已经通过至少一个静止状态的时间帧,则能够明白新回调不适于处理并且不能被放置在当前阶段队列28a上的原因。如果自从宽限期开始已有待执行的回调,则保证没有处理器会保持对与宽限期结束时的回调相关的数据单元的引用。另一方面,如果在当前宽限期的开始之后注册回调,则不保证所有可能受此回调的更新操作影响的处理器将已经通过静止状态。确实,如果在当前宽限期的结束前不久将新回调放置在当前阶段队列28a上,则自从注册回调以后可能只存在一个或两个已经通过静止状态的处理器。
所有在下一阶段队列28b上累积的回调必须等待当前宽限期的结束,以便适合于进行处理。当发生此情况时,回调处理部件分派当前阶段队列28a中的回调,将下一阶段队列28b中的所有回调分配给当前阶段队列28a,并等待下一个宽限期的结束。
可以理解,上述回调处理技术会从下一阶段队列28b分配回调给当前阶段队列28a,而不考虑所累积的回调的数量。这表示,宽限期检测处理可或不可在许多回调上分摊。如以上背景技术部分所述,没有一定级别的分摊将导致低效率。本发明的示例性实施例提供的解决方案是以如下方式管理回调,使得充分地分摊宽限期检测处理,同时监视保证紧急回调处理的条件,使得当需要时,能立即启动宽限期检测。
最后,本发明考虑将以某种方式缓冲回调(或者任何其他形式的延迟更新请求),直到所监视的条件保证调用与所缓冲的回调相关的宽限期检测(后跟回调处理)。图5示出了使用回调分级队列30以提供回调缓冲功能的情况。象在队列集28的情况中那样,能全局实现或逐个处理器地复制分级队列30。为了避免“高速缓存崩溃”,可选地,可以逐个处理器,线程,任务地,或者以其他方式建立分级队列复制。
条件监视器32(其可以被实现为宽限期检测部件24的一部分)延迟回调检测处理并容许在分级队列30上保持回调,直到由条件监视器监视的条件被检测到,此时认为保证了与所缓冲的回调相关的回调处理。存在可以被条件监视器32监视的任意数量的条件。例子包括但不限于以下的一个或多个:
1)所缓冲的回调的数量达到阈值数量;
2)所缓冲的回调已经被缓冲了阈值时间周期;
3)所缓冲的回调包括被指定为紧急的回调;
4)已经遇到存储器不足事件;
5)在一存储器类型方面遇到存储器不足事件,并且回调对应于此存储器类型。
以上示例性条件可以被分组为三种类别。条件(1)和(2)代表队列条件。条件(4)和(5)代表系统条件。条件(3)代表显式条件。图5示出了条件监视器32监视每个条件类别。可以使用由操作系统内核维护的常规信息,例如可用系统存储器量来监视系统条件。可以通过检查分级队列30,确定回调的数量,最旧的回调的等待执行时间,等等来监视队列条件。
可以通过检查分级队列30,或者通过从回调注册部件22接收显式指示,来监视显式条件,例如回调是否是紧急的。在第一种情况中,可以用分级队列32中的回调项存储回调紧急指示器。每个回调将因此包括回调函数和更新方181,182…18n(如常规的)规定的变元,并会附加地包括紧急指示器标志。在第二种情况中,回调注册部件22会通过适当的消息传递模式警告条件监视器32有紧急回调。例如,如图5中所示,回调注册部件22会设置由条件监视器32测试的紧急指示器34。紧急指示器34可以是每个处理器的变量,或者是全局变量。全局指示紧急性的优势在于,能推进所有处理器上的所有回调。逐个处理器地指示紧急性的优势在于保留了高速缓存局部性。
当注册回调时,可以指明回调的紧急特性。这可以通过多种方法实现,包括修改由回调注册部件22提供的API,以便容许更新方181,182…18n传递指明需要紧急宽限期检测的参数。能这样修改许多读取-复制更新实现中使用的常规“call_rcu()”API函数。可选地,可以使用单独的API函数,其与“call_rcu()”相似,但能替代地被指定“call_rcu_now()”。
当条件监视器32检测到所监视的一个条件时,条件监视器32将所缓冲的回调从分级队列30转移进下一阶段回调队列28b中。如果在当前阶段回调队列28a中没有待执行回调(通常会是这种情况),所缓冲的回调将适合于宽限期检测。回调处理部件26将从下一阶段回调队列28b中将所缓冲的回调移动到当前阶段回调队列28a中。之后,将开始宽限期检测处理。在可选实现中,条件监视器34会将所缓冲的回调直接从分级队列32移动到当前阶段回调队列28a,假定后者为空。
为了通过分级队列30防止下一阶段回调队列28b变得过期,本发明的有效实现可以使用下一阶段回调队列28b作为分级队列30。在图6示出了这样的实现。在此实施例中,不是每当当前阶段回调队列28a为空时将回调从下一阶段队列28b移动到当前阶段回调队列28a,而是仅在条件监视器32指示下移动回调。
不考虑分级队列30如何实现,可以理解,由于当前阶段的回调正被处理,所有在其上被缓冲的回调可能最初不适合于宽限期检测。然而,一旦分派当前阶段的回调,则所有被缓冲的回调将变得适于宽限期检测处理。虽然有这样的适合性,然而宽限期检测将不针对所缓冲的回调而执行,直到发生由条件监视器32所监视的一个条件。只有当这样的条件保证宽限期检测时,才容许这样的处理。在大多数情况下,分级队列30达到回调的阈值数量或在将至少一个回调保持了阈值时间周期会导致保证宽限期检测处理的条件。可以根据设计喜好建立这些阈值。在相对罕见的情况下,其中出现了存储器不足情况,或者其中回调被标记为紧急,能立即发起宽限期检测,以便满足紧急条件。这样,能在多个更新请求上分摊宽限期管理成本,同时保持对保证立即宽限期检测的条件的敏感。
图7提供了对根据本发明的RCU子系统20可以执行的处理的概述。在步骤40,更新方181,182…18n在回调注册部件22注册新回调。在步骤42,回调注册部件22在分级队列30上缓冲新回调。然后在步骤44,根据常规的基于回调的读取-复制更新处理,回调注册部件22设置指示器46,其向宽限期检测部件24指示正在请求新宽限期的检测。在常规的基于回调的读取-复制更新系统中,指示器46将授权宽限期检测部件24一旦任何当前宽限期结束便开始新的宽限期检测。然而,根据本发明,回调处理部件26被编程为在步骤48在开始新的宽限期检测之前等待来自条件监视器32的另一指示50。当条件监视器32在步骤48检测到所监视的条件时,在步骤52(在图5中用箭头54示出),通过将全部被缓冲的回调移动到队列集28中的适当队列,操作分级队列30。然后,条件监视器32向宽限期检测部件26提供指示50。响应指示50的接收,宽限期检测部件26被授权代表先前被缓冲的回调开始新宽限期检测。在当前的宽限期结束时,或者如果没有正被跟踪的当前宽限期,立即出现此情况。常规地,其后当新宽限期结束时通知回调处理部件26,此时能处理先前所缓冲的回调。
因此,已经公开了管理回调请求,同时最小化宽限期检测管理成本的技术。可以理解,上述概念可以被以各种方式体现在任意数据处理系统,机器实现的方法,以及计算机程序产品中,其中在程序产品中编程装置被记录在一个或多个数据存储介质上,用于控制数据处理系统执行所需要的功能。在图5中,通过附图标记100示出了用于存储这样的编程装置的示例性数据存储介质。以该类型的便携式光存储盘示出了介质100,其通常用于商业软件销售。这种介质能单独,或者结合操作系统,或者结合集成了读取-复制更新功能的其他软件产品,来存储本发明的编程装置。编程装置还可以被存储在可携带磁介质上(例如,软盘,快闪存储器棒,等等),或者被存储在结合集成进计算机平台中的驱动器系统(例如,磁盘驱动器)的磁介质上。
虽然,已经说明了本发明的各种实施例,然而应当明白,根据本发明,可以实现许多变化和可选实施例。因此,可以理解,除了根据附加权利要求的实质及其等同表述之外,本发明不受任何方式的限制。

Claims (35)

1.一种用于管理针对共享数据单元的延迟更新的请求,同时最小化与确定是否已经移除预先存在的针对数据单元的引用相关的宽限期检测管理成本的方法,包括:
缓冲适合于宽限期检测的多个更新请求,而不执行宽限期检测处理;
确定条件是否保证宽限期检测处理的开始;以及
如果所述条件保证宽限期检测处理的开始,则执行与所述更新请求相关的宽限期检测;
由此,能在多个更新请求上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
2.如权利要求1所述的方法,其中所述条件是以下条件之一:(1)所述被缓冲的更新请求达到阈值数量,(2)所述被缓冲的更新请求被缓冲了阈值时间周期,(3)所述被缓冲的更新请求包括被指定为紧急的更新请求,(4)遇到存储器不足事件,以及(5)在一个存储器类型方面遇到存储器不足事件,而所述被缓冲的更新请求包括对应于所述存储器类型的更新请求。
3.如权利要求1所述的方法,其中,通过与所述更新请求之一相关的显式指示器来识别所述条件。
4.如权利要求3所述的方法,其中,当调用与所述更新请求相关的函数时,作为参数传递所述显式指示器。
5.如权利要求3所述的方法,其中,通过使用预先指定的更新请求函数调用的所述更新请求,生成所述显式指示器。
6.如权利要求1所述的方法,其中,在队列中缓冲所述被缓冲的更新请求。
7.如权利要求1所述的方法,其中,结合读取-复制更新子系统实现所述方法,并在分级队列中缓冲所述被缓冲的更新请求,所述分级队列与所述读取-复制更新子系统的当前阶段或下一阶段更新请求队列是分立的。
8.如权利要求7所述的方法,其中,在出现保证宽限期检测处理的所述条件时,从所述分级队列将所述被缓冲的更新请求转移进所述读取-复制更新子系统的所述当前阶段或下一阶段更新请求队列之一中。
9.如权利要求1所述的方法,其中,结合包括一个或多个更新请求队列的读取-复制更新子系统来实现所述方法,并且其中在所述队列之一中缓冲所述被缓冲的更新请求。
10.如权利要求1所述的方法,其中,结合包括等待宽限期期满的第一更新请求队列以及等待所述第一队列中的所述更新请求的处理的第二更新请求队列的读取-复制更新子系统来实现所述方法,并且其中在所述第二队列中缓冲所述被缓冲的更新请求。
11.一种具有一个或多个处理器,存储器,以及在该一个或多个处理器和存储器之间的通信路径的数据处理系统,所述系统适于管理针对共享数据单元的延迟更新的请求,同时最小化与确定是否已经移除预先存在的针对数据单元的引用相关的宽限期检测管理成本,包括:
用于缓冲适合于宽限期检测的多个更新请求,而不执行宽限期检测处理的装置;
用于确定条件是否保证宽限期检测处理的开始的装置;以及
用于响应所述条件得到保证而执行与所述更新请求相关的宽限期检测的装置;
由此,能在多个更新请求上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
12.如权利要求11所述的系统,其中所述条件是以下条件之一:(1)所述被缓冲的更新请求达到阈值数量,(2)所述被缓冲的更新请求被缓冲了阈值时间周期,(3)所述被缓冲的更新请求包括被指定为紧急的更新请求,(4)遇到存储器不足事件,以及(5)在一个存储器类型方面遇到存储器不足事件,而所述被缓冲的更新请求包括对应于所述存储器类型的更新请求。
13.如权利要求11所述的系统,包括使用与所述更新请求之一相关的显式指示器来识别所述条件的装置。
14.如权利要求13所述的系统,包括当调用与所述更新请求相关的函数时,作为参数传递所述显式指示器的装置。
15.如权利要求13所述的系统,包括通过使用预先指定的更新请求函数调用的所述更新请求,生成所述显式指示器的装置。
16.如权利要求11所述的系统,包括在队列中缓冲所述被缓冲的更新请求的装置。
17.如权利要求11所述的系统,其中,结合读取-复制更新子系统实现所述系统,并包含用于在分级队列中缓冲所述被缓冲的更新请求的装置,所述分级队列与所述读取-复制更新子系统的当前阶段或下一阶段更新请求队列是分立的。
18.如权利要求17所述的系统,包括用于在出现保证宽限期检测处理的所述条件时,从所述分级队列将所述被缓冲的更新请求转移进所述读取-复制更新子系统的所述当前阶段或下一阶段更新请求队列之一中的装置。
19.如权利要求11所述的系统,其中,结合包括一个或多个更新请求队列的读取-复制更新子系统来实现所述系统,并且其中在所述队列之一中缓冲所述被缓冲的更新请求。
20.如权利要求11所述的系统,其中,结合包括等待宽限期期满的第一更新请求队列以及等待所述第一队列中的所述更新请求的处理的第二更新请求队列的读取-复制更新子系统来实现所述系统,并且其中在所述第二队列中缓冲所述被缓冲的更新请求。
21.一种用于管理针对共享数据单元的延迟更新的请求,同时最小化与确定是否已经移除预先存在的针对数据单元的引用相关的宽限期检测管理成本的计算机程序产品,包括:
一个或多个数据存储介质;
记录在所述数据存储媒体上、用于编程数据处理平台以执行以下操作的装置:
缓冲适合于宽限期检测的多个更新请求,而不执行宽限期检测处理;
确定条件是否保证宽限期检测处理的开始;以及
如果所述条件保证宽限期检测处理的开始,则执行与所述更新请求相关的宽限期检测;
由此,能在多个更新请求上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
22.如权利要求21所述的计算机程序产品,其中,所述条件是以下条件之一:(1)所述被缓冲的更新请求达到阈值数量,(2)所述被缓冲的更新请求被缓冲了阈值时间周期,(3)所述被缓冲的更新请求包括被指定为紧急的更新请求,(4)遇到存储器不足事件,以及(5)在一个存储器类型方面遇到存储器不足事件,而所述被缓冲的更新请求包括对应于所述存储器类型的更新请求。
23.如权利要求21所述的计算机程序产品,其中,通过与所述更新请求之一相关的显式指示器来识别所述条件。
24.如权利要求23所述的计算机程序产品,其中,当调用与所述更新请求相关的函数时,作为参数传递所述显式指示器。
25.如权利要求23所述的计算机程序产品,其中,通过使用预先指定的更新请求函数调用的所述更新请求,生成所述显式指示器。
26.如权利要求21所述的计算机程序产品,其中,在队列中缓冲所述被缓冲的更新请求。
27.如权利要求21所述的计算机程序产品,其中,结合读取-复制更新子系统实现所述产品,并在分级队列中缓冲所述被缓冲的更新请求,所述分级队列与所述读取-复制更新子系统的当前阶段或下一阶段更新请求队列是分立的。
28.如权利要求27所述的计算机程序产品,其中,在出现保证宽限期检测处理的所述条件时,从所述分级队列将所述被缓冲的更新请求转移进所述读取-复制更新子系统的所述当前阶段或下一阶段更新请求队列之一中。
29.如权利要求21所述的计算机程序产品,其中,结合包括一个或多个更新请求队列的读取-复制更新子系统来实现所述产品,并且其中在所述队列之一中缓冲所述被缓冲的更新请求。
30.如权利要求21所述的计算机程序产品,其中,结合包括等待宽限期期满的第一更新请求队列以及等待所述第一队列中的所述更新请求的处理的第二更新请求队列的读取-复制更新子系统来实现所述产品,并且其中在所述第二队列中缓冲所述被缓冲的更新请求。
31.一种用于管理由读取-复制更新子系统处理的回调,同时最小化宽限期检测管理成本的方法,包括:
缓冲适合于宽限期检测的多个回调,而不执行宽限期检测处理;
确定条件是否保证宽限期检测处理的开始;以及
如果所述条件保证宽限期检测处理的开始,则执行与所述回调相关的宽限期检测;
由此,能在多个回调上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
32.一种具有一个或多个处理器,存储器,以及在该一个或多个处理器和存储器之间的通信路径的数据处理系统,所述系统包括适合于管理回调,同时最小化宽限期检测管理成本的读取-复制更新子系统,并包括:
用于缓冲适合于宽限期检测的多个更新请示,而不执行宽限期检测处理的装置;
用于确定条件是否保证宽限期检测处理的开始的装置;以及
用于响应所述条件保证宽限期检测处理的开始而执行与所述更新请示相关的宽限期检测的装置;
由此,能在多个更新请示上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
33.一种用于管理针对共享数据单元的延迟更新的请求,同时最小化与确定是否已经移除预先存在的针对数据单元的引用相关的宽限期检测管理成本的方法,包括:
建立缓冲器,以保存适合于宽限期检测的多个更新请求,而不执行宽限期检测处理;
建立指示器,用于指示保证宽限期检测处理的开始的条件的存在;以及
建立启动器,其响应指示所述条件的所述指示器,并适于启动与所述更新请求相关的宽限期检测;
由此,能在多个更新请求上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
34.一种用于管理针对共享数据单元的延迟更新的请求,同时最小化与确定是否已经移除预先存在的针对数据单元的引用相关的宽限期检测管理成本的系统,包括:
缓冲器,用于保存适合于宽限期检测的多个更新请求,而不执行宽限期检测处理;
指示器,用于指示保证宽限期检测处理的开始的条件的存在;以及
启动器,其响应指示所述条件的所述指示器,并适于启动与所述更新请求相关的宽限期检测;
由此,能在多个更新请求上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
35.一种用于管理针对共享数据单元的延迟更新的请求,同时最小化与确定是否已经移除预先存在的针对数据单元的引用相关的宽限期检测管理成本的计算机程序产品,包括:
一个或多个数据存储介质;
记录在所述数据存储媒体上、用于编程数据处理平台以执行以下操作的装置:
建立缓冲器,以保存适合于宽限期检测的多个更新请求,而不执行宽限期检测处理;
建立指示器,用于指示保证宽限期检测处理的开始的条件的存在;以及
建立启动器,其响应指示所述条件的所述指示器,并适于启动与所述更新请求相关的宽限期检测;
由此,能在多个更新请求上分摊宽限期检测管理成本,同时保持对保证立即宽限期检测的条件的敏感。
CNB2005101086871A 2004-10-27 2005-10-18 效率得到提高的读取-复制更新系统和方法 Expired - Fee Related CN100412865C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/974,515 2004-10-27
US10/974,515 US7472228B2 (en) 2004-10-27 2004-10-27 Read-copy update method

Publications (2)

Publication Number Publication Date
CN1770157A true CN1770157A (zh) 2006-05-10
CN100412865C CN100412865C (zh) 2008-08-20

Family

ID=36317546

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101086871A Expired - Fee Related CN100412865C (zh) 2004-10-27 2005-10-18 效率得到提高的读取-复制更新系统和方法

Country Status (3)

Country Link
US (2) US7472228B2 (zh)
CN (1) CN100412865C (zh)
SG (1) SG121997A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069221A (zh) * 2019-04-30 2019-07-30 北京华三通信技术有限公司 数据释放方法及装置
CN115454653A (zh) * 2022-11-10 2022-12-09 南京翼辉信息技术有限公司 一种基于嵌入式实时操作系统的rcu实现方法

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395383B2 (en) * 2005-11-01 2008-07-01 International Business Machines Corporation Realtime-safe read copy update with per-processor read/write locks
US7818306B2 (en) * 2006-03-24 2010-10-19 International Business Machines Corporation Read-copy-update (RCU) operations with reduced memory barrier usage
US8024739B2 (en) * 2007-01-09 2011-09-20 International Business Machines Corporation System for indicating and scheduling additional execution time based on determining whether the execution unit has yielded previously within a predetermined period of time
US8495641B2 (en) * 2007-06-29 2013-07-23 International Business Machines Corporation Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes
US8706706B2 (en) * 2007-09-13 2014-04-22 International Business Machines Corporation Fast path for grace-period detection for read-copy update system
US8055918B2 (en) * 2008-04-03 2011-11-08 International Business Machines Corporation Optimizing preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US7953778B2 (en) * 2008-05-20 2011-05-31 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy update and parallel updates
US8037024B1 (en) * 2008-06-04 2011-10-11 Google Inc. Data propagation in a multi-shard database system
US8108696B2 (en) * 2008-07-24 2012-01-31 International Business Machines Corporation Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US7953708B2 (en) * 2008-07-28 2011-05-31 International Business Machines Corporation Optimizing grace period detection for preemptible read-copy update on uniprocessor systems
US8020160B2 (en) * 2008-07-28 2011-09-13 International Business Machines Corporation User-level read-copy update that does not require disabling preemption or signal handling
US8195893B2 (en) * 2008-11-03 2012-06-05 International Business Machines Corporation Eliminating synchronous grace period detection for non-preemptible read-copy update on uniprocessor systems
US8185704B2 (en) 2009-09-02 2012-05-22 International Business Machines Corporation High performance real-time read-copy update
US9459963B2 (en) * 2009-09-03 2016-10-04 International Business Machines Corporation Safely rolling back transactions in a transactional memory system with concurrent readers
CN102222037B (zh) * 2010-04-15 2014-04-02 国际商业机器公司 用于定位java程序的瓶颈的方法和设备
US8788543B2 (en) 2010-05-13 2014-07-22 International Business Machines Corporation Scalable, concurrent resizing of hash tables
US8407503B2 (en) 2010-09-27 2013-03-26 International Business Machines Corporation Making read-copy update free-running grace period counters safe against lengthy low power state sojourns
US9043796B2 (en) * 2011-04-07 2015-05-26 Microsoft Technology Licensing, Llc Asynchronous callback driven messaging request completion notification
US8615771B2 (en) 2011-06-20 2013-12-24 International Business Machines Corporation Effective management of blocked-tasks in preemptible read-copy update
US9189413B2 (en) 2011-06-20 2015-11-17 International Business Machines Corporation Read-copy update implementation for non-cache-coherent systems
US9250978B2 (en) 2011-06-27 2016-02-02 International Business Machines Corporation Asynchronous grace-period primitives for user-space applications
US9009122B2 (en) 2011-12-08 2015-04-14 International Business Machines Corporation Optimized resizing for RCU-protected hash tables
US8661005B2 (en) 2011-12-08 2014-02-25 International Business Machines Corporation Optimized deletion and insertion for high-performance resizable RCU-protected hash tables
US9256476B2 (en) * 2011-12-10 2016-02-09 International Business Machines Corporation Expedited module unloading for kernel modules that execute read-copy update callback processing code
US9003420B2 (en) 2012-05-18 2015-04-07 International Business Machines Corporation Resolving RCU-scheduler deadlocks
US8938631B2 (en) 2012-06-30 2015-01-20 International Business Machines Corporation Energy efficient implementation of read-copy update for light workloads running on systems with many processors
US8874535B2 (en) 2012-10-16 2014-10-28 International Business Machines Corporation Performance of RCU-based searches and updates of cyclic data structures
US8924655B2 (en) 2013-02-04 2014-12-30 International Business Machines Corporation In-kernel SRCU implementation with reduced OS jitter
US8972801B2 (en) 2013-02-04 2015-03-03 International Business Machines Corporation Motivating lazy RCU callbacks under out-of-memory conditions
US9244844B2 (en) 2013-03-14 2016-01-26 International Business Machines Corporation Enabling hardware transactional memory to work more efficiently with readers that can tolerate stale data
US9348765B2 (en) 2013-03-14 2016-05-24 International Business Machines Corporation Expediting RCU grace periods under user mode control
US9396226B2 (en) 2013-06-24 2016-07-19 International Business Machines Corporation Highly scalable tree-based trylock
US9411868B2 (en) * 2013-08-23 2016-08-09 Morgan Stanley & Co. Llc Passive real-time order state replication and recovery
US9389925B2 (en) 2013-12-03 2016-07-12 International Business Machines Corporation Achieving low grace period latencies despite energy efficiency
US9286238B1 (en) * 2013-12-31 2016-03-15 Emc Corporation System, apparatus, and method of cache management
CN104376096B (zh) * 2014-11-24 2018-07-13 北京京东尚科信息技术有限公司 基于缓冲区的异步更新的方法
US9720836B2 (en) 2015-05-11 2017-08-01 International Business Machines Corporation Preemptible-RCU CPU hotplugging while maintaining real-time response
US9552236B2 (en) 2015-05-12 2017-01-24 International Business Machines Corporation Tasks—RCU detection of tickless user mode execution as a quiescent state
US9886329B2 (en) 2015-06-25 2018-02-06 International Business Machines Corporation Scalable RCU callback offloading
US9965432B2 (en) 2015-10-02 2018-05-08 International Business Machines Corporation Handling CPU hotplug events in RCU without sleeplocks
US10140131B2 (en) 2016-08-11 2018-11-27 International Business Machines Corporation Shielding real-time workloads from OS jitter due to expedited grace periods
US10353748B2 (en) 2016-08-30 2019-07-16 International Business Machines Corporation Short-circuiting normal grace-period computations in the presence of expedited grace periods
US10282230B2 (en) 2016-10-03 2019-05-07 International Business Machines Corporation Fair high-throughput locking for expedited grace periods
US10146577B2 (en) 2016-12-11 2018-12-04 International Business Machines Corporation Enabling real-time CPU-bound in-kernel workloads to run infinite loops while keeping RCU grace periods finite
US10372510B2 (en) 2017-03-15 2019-08-06 International Business Machines Corporation Using expedited grace periods to short-circuit normal grace-period computations
US11055271B2 (en) 2017-11-13 2021-07-06 International Business Machines Corporation Funnel locking for sleepable read-copy update
US10983840B2 (en) 2018-06-21 2021-04-20 International Business Machines Corporation Consolidating read-copy update types having different definitions of a quiescent state
US10268610B1 (en) 2018-08-16 2019-04-23 International Business Machines Corporation Determining whether a CPU stalling a current RCU grace period had interrupts enabled
US10831542B2 (en) 2018-10-01 2020-11-10 International Business Machines Corporation Prevent counter wrap during update-side grace-period-request processing in tree-SRCU implementations
US10613913B1 (en) 2018-10-06 2020-04-07 International Business Machines Corporation Funnel locking for normal RCU grace period requests
US11386079B2 (en) 2019-06-26 2022-07-12 International Business Machines Corporation Replacing preemptible RCU with an augmented SRCU implementation
US10977042B2 (en) 2019-07-26 2021-04-13 International Business Machines Corporation Using expedited RCU grace periods to avoid out-of-memory conditions for offloaded RCU callbacks
US11321147B2 (en) 2019-08-29 2022-05-03 International Business Machines Corporation Determining when it is safe to use scheduler lock-acquiring wakeups to defer quiescent states in real-time preemptible read-copy update
US11314662B2 (en) * 2020-03-05 2022-04-26 Fortinet, Inc. Providing a secure communication channel between kernel and user mode components

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442758A (en) 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
JP2708386B2 (ja) 1994-03-18 1998-02-04 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時更新及び複写手順を通して重複データベースを回復させる方法及び装置
US6490671B1 (en) * 1999-05-28 2002-12-03 Oracle Corporation System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system
US6434677B1 (en) 1999-06-01 2002-08-13 Intel Corporation Method and apparatus for altering data length to zero to maintain cache coherency
US6854051B2 (en) 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Cycle count replication in a simultaneous and redundantly threaded processor
US7177279B2 (en) * 2001-04-24 2007-02-13 Agere Systems Inc. Buffer management for merging packets of virtual circuits
US7096392B2 (en) * 2004-05-07 2006-08-22 Asempra Technologies, Inc. Method and system for automated, no downtime, real-time, continuous data protection

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069221A (zh) * 2019-04-30 2019-07-30 北京华三通信技术有限公司 数据释放方法及装置
CN110069221B (zh) * 2019-04-30 2020-03-06 北京华三通信技术有限公司 数据释放方法及装置
CN115454653A (zh) * 2022-11-10 2022-12-09 南京翼辉信息技术有限公司 一种基于嵌入式实时操作系统的rcu实现方法
CN115454653B (zh) * 2022-11-10 2023-02-24 南京翼辉信息技术有限公司 一种基于嵌入式实时操作系统的rcu实现方法

Also Published As

Publication number Publication date
US20080313238A1 (en) 2008-12-18
SG121997A1 (en) 2006-05-26
US20060100996A1 (en) 2006-05-11
US7472228B2 (en) 2008-12-30
US8990510B2 (en) 2015-03-24
CN100412865C (zh) 2008-08-20

Similar Documents

Publication Publication Date Title
CN100412865C (zh) 效率得到提高的读取-复制更新系统和方法
US9513817B2 (en) Free space collection in log structured storage systems
US8010766B2 (en) Increasing buffer locality during multiple table access operations
US20170344473A1 (en) Managing objects stored in memory
JP5142995B2 (ja) メモリページ管理
US20160179865A1 (en) Method and system for concurrency control in log-structured merge data stores
EP2889776B1 (en) Data arrangement control program, data arrangement control method and data arrangment control apparatus
US9274963B2 (en) Cache replacement for shared memory caches
CN1130641C (zh) 具有永久性存储器的可恢复磁盘控制系统
US8972680B2 (en) Data staging area
US8200627B2 (en) Journaling database changes using a bit map for zones defined in each page
US10223270B1 (en) Predicting future access requests by inverting historic access requests in an object storage system
US8255436B2 (en) Per thread garbage collection
US11762821B2 (en) Moving window data deduplication in distributed storage
US10606795B2 (en) Methods for managing a buffer cache and devices thereof
US11138226B2 (en) Moving replicated data in a cloud environment
CN100419689C (zh) 中断处理方法及装置
US7937541B2 (en) Speed selective table scan operation
US11645198B2 (en) Buffer pool maintenance improvement
CN1154749A (zh) 监视数字多处理器的方法
Simha RPE: The Art of Data Deduplication

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080820