CN100365589C - 帮助多端口主机适配器的端口测试的装置、***和方法 - Google Patents

帮助多端口主机适配器的端口测试的装置、***和方法 Download PDF

Info

Publication number
CN100365589C
CN100365589C CNB2005100994677A CN200510099467A CN100365589C CN 100365589 C CN100365589 C CN 100365589C CN B2005100994677 A CNB2005100994677 A CN B2005100994677A CN 200510099467 A CN200510099467 A CN 200510099467A CN 100365589 C CN100365589 C CN 100365589C
Authority
CN
China
Prior art keywords
port
test
module
thread
threads
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.)
Expired - Fee Related
Application number
CNB2005100994677A
Other languages
English (en)
Other versions
CN1760839A (zh
Inventor
罗杰·G·哈特霍恩
布伦特·R·莫德西特
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.)
Core Usa Second LLC
GlobalFoundries Inc
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 CN1760839A publication Critical patent/CN1760839A/zh
Application granted granted Critical
Publication of CN100365589C publication Critical patent/CN100365589C/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开一种用于帮助多端口主机适配器的端口测试的装置、***和方法。本发明包括调度器,其调度用来测试多端口适配器的第一端口的多个线程和用来测试第二端口的多个线程的执行。将端口测试例程划分成线程,使得最小化执行时间和切换开销。多线程化模块提供该多个线程的多线程化执行,使得并行执行第一端口的端口测试和第二端口的端口测试。该装置还包括通信模块,其使第一端口和第二端口离线。第三端口保持在线以便执行与涉及第一端口和第二端口的多个线程进行线程化的输入/输出(I/O)通信。

Description

帮助多端口主机适配器的端口测试的装置、***和方法
技术领域
本发明涉及连网计算机***。具体地说,本发明涉及一种用于帮助计算机***中的多端口主机适配器的端口测试的装置、***和方法。
背景技术
计算机和信息技术在其能力和复杂性上不断进步和发展。具体地说,网络化硬件和软件已经从专用单端口通信发展到两个连网设备之间的多端口通信。附加的端口提供更高的吞吐量、更高的可靠性以及端口之一发生故障或者导致通信错误的情况下的故障恢复保护。类似地,两个连网计算机***可以包括多个这里被称作的网络主机适配卡的网络接口卡,以提供增加的可靠性、吞吐量,并且用来提供网络通信。
图1示出了适于实现本发明以便帮助主机适配器和多端口适配器的特定端口的端口测试的***100。***100包括由网络106如存储区域网(SAN)106连接到存储子***104的主机102。主机102以输入/输出(I/O)通信的形式将控制命令和数据传达到存储子***104。主机102在本技术领域内是公知的,并且包括被配置成将控制命令或数据传达到存储子***104的任何计算机***。
类似地,存储子***104是公知的,并且包括能够响应来自主机102的控制命令和I/O通信的任何计算机***。适用于本发明的存储子***104的一个例子是可从国际商业机器公司(IBM)、阿芒克、纽约购得的IBM企业级存储服务器。SAN 106表示专用于与主机102和存储子***104之间的数据传输和控制相关的通信的网络。然而,本发明可以采用任何网络106来实现,而SAN只是一个例子。
主机102与存储子***104之间的通信可以使用各种常见协议以及支持它们的硬件和软件来进行。例如,存储子***104可以包括被配置成支持光纤通信光通信协议的主机适配器108。当然,可以使用各种其它主机适配器108来支持其它协议,其包括但不限于因特网小型计算机接口(iSCSI)、基于IP的光纤通道(FCIP)、企业级***互连(ESCON)、InfiniBand以及以太网。
一般地,为了提供增强的可靠性以及增强的性能吞吐量,存储子***104包括多个主机适配器108、一个或多个处理器110、电子存储器设备112、以及一个或多个电子存储设备114。处理器110处理控制命令和I/O通信。电子存储器设备112为处理器提供命令和控制存储。电子存储设备114提供数据的持久性存储,并且可以包括存储阵列,以便提高数据存储容量和可靠性。
一般地,期望存储子***104提供24/7调度上的可靠操作。因此,与存储子***104的硬件和软件相关联的自然错误和故障应当对正常操作提供最小的中断。遗憾的是,在传统的存储子***104中对错误的修复、维护和故障排除会引入显著的延迟并且严重地影响存储子***104的性能。
具体地说,在对错误进行故障排除时会损失存储子***104的大量时间和效率。一般地,故障排除包括对不同的硬件和软件模块运行一个或多个测试例程,以隔离错误。典型地,存储子***104在故障排除期间保持在线并且用来服务主机请求。传统地,使每个主机适配器108离线,使用测试例程进行测试,并且如果适配器108通过测试例程,则将其置回到在线。以这种方式,未被测试的主机适配器108可以继续服务I/O通信。
顺序地,依次对每个适配器108施加测试例程会花费大量的时间,尤其是对于需要技术人员附连和移除测试设备的测试例程更是如此。这种测试例程的一个例子是轮回测试(也被称作回环测试或循环测试)。轮回测试进行测试以确保适配器的传送器和接收器正在通过特定端口正确地发送和接收数据。测试数据被传送出端口,然后通过一件轮回测试设备传回到同一端口,其中该轮回测试设备典型地是适于通信硬件的电缆。
传统地,为了执行轮回测试,使整个主机适配器108离线。当主机适配器108包括多个端口时,这变得有问题。无错误的端口无需让其离线。此外,使用传统的测试例程,一次一个地顺序测试端口。典型地,技术人员将轮回测试电缆附连到要被测试的端口,启动端口轮回测试例程,等待测试例程完成,记录结果,然后将轮回测试电路连接到下一个端口。识别任何出故障的端口。测试单个端口可能只花费两分钟那么短。然而,所有端口都离线,直到测试了最后端口为止。对单个适配器执行轮回测试可能花费十分钟那么长。该延迟将会严重地影响存储子***104的性能。
此外,轮回测试例程是针对单端口适配器而设计的。因此,轮回测试保存适配器108的当前状态,使适配器108离线,然后恢复该状态以便将适配器108置回到在线。这意味着当在单个多端口主机适配器108上测试多个端口时,维护状态信息的延迟被乘以被测试端口的数目。多端口主机适配器108上的端口的串行测试显著增加了测试时间和适配器的停歇时间。
另外,使用传统的端口测试例程如轮回测试,启动轮回测试的控制器或处理器在报告轮回测试结果之前等待轮回测试完成。在多端口适配器108中,这是有问题的,因为适配器108的时间和资源(其它未被测试的端口)由于控制器被占用以便测试一个端口而被浪费。类似地,由于测试例程使整个适配器离线,因此不能使用在该测试中未被涉及的端口以便继续处理I/O通信。适配器是离线的,并且适配器的控制器或处理器忙于等待单端口测试例程完成。
从前面的讨论应当清楚,需要一种用于帮助计算机***中的多端口主机适配器的端口测试的装置、***和方法。有益地,这种装置、***和方法将仅仅使正被测试的端口离线,并且允许在端口测试例程中未被涉及的端口继续处理I/O通信。另外,该装置、***和方法将在多端口适配器的两个或更多个端口上同时执行端口测试例程。此外,该装置、***和方法将配置多端口适配器一次,以便执行一个或多个端口测试例程,然后重新配置多端口适配器一次,以恢复正常的I/O通信处理。
发明内容
响应于本技术领域的目前状态,特别是响应于本技术领域内尚未解决的用于对计算机***中的多端口主机适配器进行端口测试的问题和需要,提出了本发明。从而,本发明被提出用来提供一种用于帮助计算机***中的多端口主机适配器的端口测试的装置、***和方法,其克服了本技术领域内的上述缺点中的多个或所有缺点。
根据本发明的装置包括调度器以及多线程化模块。调度器调度多个线程的执行以测试多端口适配器的第一端口和第二端口。该多个线程通过划分表示要被施加到第一和第二端口的测试的端口测试例程来定义。这些线程包括端口测试例程的独立可执行段。在特定实施例中,这些线程包括被编组成最小化每个线程的运行时间和切换开销的测试例程的相关功能性。在一个实施例中,调度器对该多个线程的执行进行排序(order),使得对每个被测试端口执行每个线程。
多线程化模块被配置成提供该多个线程的多线程化执行,使得并行执行第一端口的端口测试和第二端口的端口测试。以这种方式,同时测试单个适配器的多个端口。在一个实施例中,多线程化模块存储第一端口和第二端口中的每一个的端口上下文,并且响应于恢复与每个端口相关联的线程的执行而读取端口上下文。多线程化模块可以在切换到另一个线程之前以预定的时间间隔执行每个线程。
在特定实施例中,该装置包括通信模块、配置模块以及端口测试模块。特定实施例中的通信模块被配置成使第一端口和第二端口离线,同时多端口适配器的第三端口保持在线以提供输入/输出(I/O)通信。另外,多线程化模块还可被配置成多线程化I/O通信和涉及第一端口和第二端口的多个线程,其中该I/O通信利用第三端口。
配置模块响应于单个多端口测试请求而配置多端口适配器以便进行第一端口和第二端口的端口测试。在特定实施例中,多端口适配器保持被配置以便进行端口测试,直到所有测试端口的线程完成了执行为止。类似地,配置模块响应于第一端口和第二端口上的端口测试例程的完成而重新配置多端口适配器以恢复常规I/O通信。
端口测试例程确认来自控制处理器的多端口测试请求。端口测试模块还结束与控制处理器的通信会话,使得控制处理器可以恢复正常操作。在特定实施例中,端口测试模块响应于来自控制处理器的周期性状态查询而将状态报告消息发送到控制处理器。
在该装置的一个实施例中,启动模块被配置成将多端口测试请求发送到多端口主机适配器的控制器。多端口测试请求向端口测试例程标识多端口适配器的一个或多个端口,并且控制器包括类似于上述的调度器和多线程化模块。该装置还包括确认模块,其被配置成接收来自控制器的端口测试例程的确认。该装置还可包括轮询模块,其被配置成结束与控制器的通信会话、发送周期性状态查询、以及处理来自控制器的状态报告消息。
还提供了本发明的方法,其用于帮助计算机***中的多端口主机适配器的端口测试。在一个实施例中,该方法包括将端口测试例程划分成多个线程,每个线程包括该例程的段。这些线程相互独立,并且被设计成最小化线程的执行时间和切换时间。接下来,调度该多个线程的执行,以便测试多端口适配器的第一端口和第二端口,其中该测试由端口测试例程表示。最后,多线程化该多个线程的执行,使得并行执行第一端口的端口测试和第二端口的端口测试。
在特定实施例中,该方法可包括使第一端口和第二端口离线,同时多端口适配器的第三端口保持在线以提供I/O通信,并且多线程化I/O通信和涉及第一端口和第二端口的多个线程,其中该I/O通信利用第三端口。此外,该方法可以响应于单个多端口测试请求而配置多端口适配器以便进行第一端口和第二端口的端口测试,并且响应于第一端口和第二端口上的端口测试例程的完成而重新配置多端口适配器以恢复常规I/O通信。
本发明还包括了被布置为***、计算机可读代码和装置的实施例,其包括与上面关于装置和方法所述的组件和步骤基本上相同的功能性。本发明的特性和优点从下面描述和所附权利要求中将会变得更加完全清楚,或者可以通过如下所述实施本发明而知晓。
附图说明
为了容易地理解本发明的优点,将通过参考在附图中示出的特定实施例来给出对上面简述的本发明的更具体描述。应当理解,这些附图仅示出了本发明的典型实施例,因此不被认为是限制其范围。本发明将通过利用附图以附加的特定性和细节来描述和说明,其中:
图1是示出适于实现本发明的连网计算机的***的方框图;
图2是示出根据本发明的用于帮助计算机***中的多端口主机适配器的端口测试的装置的一个实施例的逻辑方框图;
图3是示出在本发明的一个实施例中将端口测试例程划分成多个线程的逻辑方框图;
图4是示出根据本发明的用于帮助计算机***中的多端口主机适配器的端口测试的装置的一个实施例的示意方框图;
图5是示出根据本发明可以如何对线程进行多线程化的逻辑方框图;
图6是示出根据本发明的用于帮助计算机***中的多端口主机适配器的端口测试的装置的可选实施例的示意方框图;
图7是示出用于帮助计算机***中的多端口主机适配器的端口测试的方法的示意流程图;以及
图8是示出用于帮助计算机***中的多端口主机适配器的端口测试的更详细方法的示意流程图。
具体实施方式
可以容易地理解,可以以各种不同的配置来布置和设计一般描述且这里在附图中示出的本发明的组件。这样,如附图所示的下面对本发明的装置、***和方法的实施例的更详细描述不旨在限制要求保护的本发明的范围,而只是代表本发明的选择实施例。
通过参照附图,将会最好地理解本发明的所示实施例,其中相同的部件始终以相同的标号表示。下面描述仅旨在是示例性的,并且只是示出了与这里要求保护的本发明一致的设备、***和过程的特定所选实施例。
图2示出了被配置成帮助计算机***中的多端口主机适配器的端口测试的***200的逻辑方框图。***200的各个逻辑组件可以包括如图1所示的***100内的单独或分布的硬件和/或软件组件。
虽然本发明是关于主机102、SAN 106和存储子***104而描述的,但是本领域的技术人员应当认识到本发明可以采用任何包括多端口主机适配器的连网计算机***来实施。因此,本发明的范围不局限于这里描述的实施例。类似地,虽然这里详细描述了特定端口测试例程、轮回测试,但是本领域的技术人员应当认识到各种其它端口测试例程可以用于本发明。例如,端口POST(通电自检)和端口内部电回路测试可以用于本发明。
图2中的***200示出了帮助多端口主机适配器中的端口测试的***的逻辑图示。***200多线程化端口测试例程,使得并行测试多个端口。***200立即配置整个主机适配器以便测试多个端口,并且一旦端口的所有端口测试完成,则类似地重新配置整个主机适配器。***200仅使正被测试的端口离线,并且允许未被测试的端口继续传输I/O通信。
***200包括测试接口202和测试模块204。测试接口202和测试模块204可以使用控制处理器206、电子存储器设备208和具有至少一个端口212的主机适配器210来实现。测试接口202允许用户或诸如软件模块的自动化***与测试模块204交互,以便启动端口测试并且获得端口测试结果。然而,与传统的测试接口相反,测试接口202允许诸如技术人员的用户同时在多个端口上启动端口测试。用于完成此的组件在下面更详细地加以描述。因此,用户可以选择一个端口、所有端口或者端口子集以便并行执行端口测试例程214。
测试模块204在主机适配器210的两个或更多个端口212上同时执行端口测试例程214。在一个实施例中,测试模块204包括公共软件模块的两个部分204A、204B,其协作以对端口212执行端口测试例程214。每个部分204A和204B的操作细节关于图4和6来提供。可选地,测试模块204可以包括由控制处理器206控制的单个硬件和/或软件模块、由主机适配器210执行的硬件或软件模块、或者与主机适配器210通信的单独硬件组件。
传统地,控制处理器206和主机适配器210的控制器/处理器(未示出)都不被配置成多线程化端口测试软件。因此,测试模块204包括下面更详细描述的调度器和多线程化模块。调度器和多线程化模块使得测试模块204能够调度和多线程化多个线程以便并行测试多个端口212,并且还允许在未被测试的端口212上继续I/O通信。
控制处理器206管理和控制***200中的数据处理。典型地,控制处理器206是执行嵌入式单线程化操作***的微处理器。在一个实施例中,控制处理器206可以包括关于图1所述的存储子***104中的处理器110之一。在特定实施例中,控制处理器206是中央电子装置复合体(CEC)中的很多处理器之一。优选地,测试模块204A、B被配置成使得控制处理器206可以启动端口测试,并且恢复其它处理任务而无需等待端口测试完成。
主机适配器210在网络例如SAN 106上与一个或多个主机102通信。主机适配器210在主机102和***200之间提供I/O通信。优选地,为了提供高可用性、可靠性和吞吐量,单个主机适配器210包括多个端口212。主机适配器210可以通过公共通信总线(未示出)而与控制处理器206进行电气通信。
图3示出了将端口测试例程214划分成多个线程302。所示的端口测试例程214代表一组软件代码(源码或可执行代码)。在一个实施例中,传统的端口测试例程214在物理上被划分成较小的独立可执行线程302。这里所引用的“较小”意味着线程302花费较少的时间和处理器资源来执行。典型地,这还意味着,与在整个端口测试例程214中相比,在一个线程302中存在更少行数的可执行代码。另外,这里所使用的“线程”旨在具有其常见的业界含义。具体地说,根据Wikipedia在线百科全书参考文献,在主题“线程(计算机科学)”下,“线程”是“通过时间分片或者多处理与其它序列并行执行的指令序列”。
优选地,端口测试例程214由工程师或者熟悉例程214的不同代码段304之间的依赖性和关系的其它人员人工划分。在特定实施例中,由例程214中的代码指令表示的功能性被编组成最小化所得到的线程302的运行时间。
在一个实施例中,例程214的最优划分产生原子线程302。原子线程302是其中功能步骤不多于执行单个原子功能所需的功能步骤的线程302。原子功能是应当完成或失败但是不在开始和结束之间的状态下终止的功能。以这种方式,线程302花费最小数量的运行时间/处理时间,并且不应当被中断。中断原子线程302可能需要重新执行线程302。
可选地,线程302被配置成在可接受范围的处理/运行时间内完成尽可能多的功能性。例如,在一个实施例中,性能要求可以允许在切换线程以服务其它处理任务之前执行线程302多达5秒。因此,只要平均执行时间低于五秒阈值,线程302就可以包括多个功能。
在特定实施例中,除了组织功能性以最小化运行时间之外,功能性还可以被编组成线程302,使得最小化的切换开销。切换开销表示保存当前执行线程302的状态使得可以中断线程302并且允许另一个线程302使用共享处理器所需的时间。在特定实施例中,线程302基于预定义的时间间隔而是抢占式的。因此,在该时间间隔内尚未完成的线程302被中断。保存状态信息或数据,例如线程302正在使用的端口的标识符(这里被称作“端口上下文”)、以及任何状态标志,以便另一个线程302可以使用共享处理器。因此,在以抢占方式执行线程302的实施例中,代码段204被组织成最小化切换开销。
图3示出了被划分成多个线程302的轮回测试端口例程214的例子。代码段304可以被划分成最小化运行时间和切换开销。每个代码段304变为单独的独立可执行线程302。轮回测试的功能性可以被组织成初始化线程302、传送线程302、接收线程302、验证线程302、以及报告线程302。
本领域的技术人员应当认识到,这些线程302只是代表性例子。其它例程可以具有包括相同或不同功能性的更多或更少线程302。此外,在特定实施例中,不是将现有端口例程214划分成线程302,而是可以最初就设计和组织新例程214以便作为线程302执行。在任何实施例中,最终结果是一起执行端口测试例程214的功能的多个线程302。
初始化线程302可以通过例如复位缓冲器来为端口准备轮回测试。传送线程302可以使用端口传送一个或多个测试数据包。接收线程302可以使用端口接收该一个或多个测试数据包。验证线程302可以确认所发送的一个或多个测试数据包是否匹配所接收的测试数据包。最后,报告线程302可以报告轮回测试的成功或失败。
优选地,顺序标识符306与每个线程302相关联。顺序标识符306定义要使用特定端口执行线程302的次序。此外,顺序标识符306还可用来相互区分线程302。可选地,另一个标识符(未示出)可以与每个线程302相关联。标识符306可以与线程302并入在一起,或者存储在另一个结构中。特定线程302可以是次序无关的。因此,可以重复特定顺序标识符306。使用标识符306,测试模块204可以确保对给定端口调度和执行所有线程302。
图4示出了被配置成帮助如关于图2所述的多端口适配器的端口测试的测试模块400的一个实施例。在一个实施例中,测试模块400对应于可以在主机适配器210上执行的测试模块204B。测试模块400可以包括端口测试模块402、配置模块404、通信模块406、调度器408、以及多线程化模块410。
端口测试模块402接收来自控制处理器206的多端口测试请求。如关于图2所述,多端口测试请求优选地标识端口测试以及要对其运行测试的适配器210的特定端口。传统地,控制处理器206保持与测试模块的通信会话,直到完成了端口测试为止。然而,这阻止了控制处理器206在端口测试期间执行其它有用工作。
在特定实施例中,端口测试模块402被配置成将多端口测试请求的确认发送到控制处理器206。一旦确认了多端口测试请求,则端口测试模块402结束与控制处理器206的通信会话。然后,控制处理器206自由地恢复正常操作,从而服务***200中的其它任务。
端口测试模块402还被配置成响应来自控制处理器206的周期性状态查询。例如,控制处理器206可以每五秒钟将状态查询发送到端口测试模块402。如果完成了所请求的所有端口测试,则端口测试模块402可以将相应的报告消息发送到控制处理器206。如果否,则端口测试模块402可以发送表示端口测试仍然正在进行中的报告消息。在特定实施例中,端口测试模块402可以发送表示当前完成的端口测试的结果的报告消息。
端口测试模块402使得控制处理器206能够使用轮询技术来确定端口测试结果。以这种方式,控制处理器206可以执行其它处理任务而无需等待端口测试完成。此外,端口测试模块402被配置成接收启动用于多个端口212的多个端口测试的单个端口测试请求。
配置模块404与端口测试模块402通信,并且响应于单个多端口测试请求而配置多端口适配器210(参见图2)以便进行一个或多个端口的端口测试。传统地,在每个端口测试之间就已经配置了适配器。传统地,多端口适配器的端口测试是以串行方式进行的。因此,根据所请求的端口测试数,配置适配器以便测试,并且重新配置它以便恢复常规I/O通信。
在本发明的所示实施例中,主机适配器210被配置一次以便进行端口测试,而不管所请求的端口测试数。主机适配器210仅被重新配置一次,以恢复常规I/O通信。典型地,主机适配器210可针对特定计算环境来配置。该配置可以包括传送速度、可接受错误或重新传送阈值、缓冲器大小等。存储这些配置值,然后复位到缺省值,以便端口测试将可靠地表示何时出现错误。还可以在准备端口测试时刷新适配器缓冲器。
优选地,配置模块404配置特定于要被测试的特定端口212的适配器210的资源。另外,可以配置适配器210上的任何共享资源以便进行端口测试,使得未被测试的端口可以继续常规I/O通信。
在特定实施例中,当端口测试完成时,端口测试模块402与配置模块404通信。从而,配置模块404将主机适配器210重新配置到启动端口测试之前的配置状态。读取较早存储的配置信息,并且覆写端口测试配置信息。这样,配置多端口适配器210以便恢复常规I/O通信。以这种方式,可以进行多个端口测试,并且配置和重新配置多端口适配器210仅仅一次,从而节省了时间和计算资源。
通信模块406与配置模块404通信。通信模块406使单独端口212离线,以便进行端口测试,并且一旦端口测试完成,就将端口212恢复到在线状态。这里使用的术语“在线”是指端口212、任何端口特定资源和与端口202接口的控制器如控制器206识别出端口212正在工作并且准备传输常规I/O通信的状况。类似地,术语“离线”是指端口212当前不能传输常规I/O通信的端口202、端口特定资源等的状态。
在一个实施例中,通信模块406允许测试多个端口212,同时适配器210的一个或多个其它端口212保持在线。通信模块406可以使第一端口212和第二端口212离线,并且保持第三端口在线,使得第三端口212可以继续提供常规I/O通信。为了保持第三端口在线,通信模块406可以保持适配器210上的特定队列、缓冲器、I/O通道和其它资源。
本领域的技术人员应当认识到,使第二端口212离线可以采用各种方式来实现。例如,可以关闭第二端口212的状态标志,可以从由控制处理器206识别的可用端口212的池或队列中移除端口212,并且可以实现表示端口212是否可用于I/O通信的各种其它方式。通过使一个或多个端口212离线并且保持一个或多个端口212在线,适配器210可以在端口测试期间继续I/O操作。以这种方式,端口测试对常规I/O通信具有较少的影响。
在特定实施例中,将端口测试请求传达到调度器408。调度器408调度多个线程302的执行,以便测试多端口适配器210的第一端口212和第二端口212。调度器408将端口212与适当排序的线程302相关联,以便执行所请求的端口测试。初始地,调度器408识别用于所请求的端口测试的线程302。在特定实施例中,调度器408根据适于执行端口测试的次序来对线程302进行排序。可选地,调度器408可以通过每个线程顺序标识符306来分开这些线程。
如关于图3所述,线程302包括单个端口测试例程214的独立可执行段。每个线程302被设计成在固定时间段内执行,或者根据需要而中断,使得可执行多线程化。因此,线程302与端口上下文相关联。当线程302停止执行时,存储端口上下文,并且当线程302或相关的下一个线程302恢复/开始执行时,重新读取端口上下文。
端口上下文表示与正在对其运行端口测试的特定端口212相关的基本上所有信息。该信息的一些例子可以包括端口标识符、通信总线的端口地址、端口特定缓冲器或标志的地址等。在一个实施例中,调度器408组合端口上下文与线程302。可选地,将端口上下文存储在存储器208内的数据结构如记录中。端口上下文可以根据需要由线程302引用。
调度器408将线程302与端口上下文相关联。在一个实施例中,线程302包括存储了端口上下文的存储器地址的指示符。在另一个实施例中,将端口上下文存储在表示线程302的数据结构中。
在线程302被识别、排序并且通过端口上下文与适当的端口212相关联的情况下,调度器408然后组织线程302以便执行。在一个实施例中,由调度器408填充等待队列412。等待队列412包括特定于特定端口测试和端口212的一组条目414。在等待队列412中创建条目,使得通过从队列412的开头执行线程302,实现每个特定端口测试的线程302的正确操作次序。在一个实施例中,等待队列412保存用于多个端口212的所有端口测试的所有线程302的条目412。
优选地,端口上下文被存储在存储器208中,并且线程302包括也存储在存储器208中的公共一组机器可执行代码。因此,等待队列412保存用于每个条目414的一组指针。第一指针是唯一标识要被执行的线程302的线程ID 416。端口上下文指针418表示端口上下文被存储的地址。命令指针420可以包括实现线程302的可执行代码的地址。
优选地,调度器408为对特定端口212实现所请求的端口测试例程214所需的每个线程302生成一个条目414。调度器408确保了为被测试的每个端口212执行每个线程302。例如,如果测试两个端口212,则将执行端口初始化线程302两次,其中每个端口212分别一次。因此,输入用于每个端口初始化线程302的条目414。
在一个实施例中,调度器408组织条目414,使得用于第一端口212的第一端口测试的条目414与用于第二端口212的第二端口测试的条目414大约均匀地分配。以这种方式,等待队列412中的条目414的次序均匀地在多个端口测试之间划分执行时间,其中每个端口测试的线程302仍然以正确的次序执行。
基本上在两个或更多个端口测试线程302之间分配执行次序/时间的过程这里称作多线程化。具体地说,这里所使用的术语“多线程化”旨在具有其业界接受的含义。具体地说,多线程化意味着在多个线程之间共享单个处理器,使得最小化切换由处理器执行哪个线程所需的时间。参见免费在线计算词典www.foldoc.org中的多线程化定义。通过多线程化执行次序,可以并行执行两个或更多个端口测试线程。多线程化意味着一个端口测试在开始执行之前不等待前面的端口测试。相反,同时执行这两个端口测试的线程。
以这种方式,调度器408调度多端口测试请求,使得一旦执行开始,就将并行执行第一端口和第二端口的端口测试。多线程化模块410如等待队列412所指示的那样实现所调度的线程302的多线程化,并且当线程302继续执行时保持多线程化。另外,多线程化模块410多线程化其它线程。例如,来自较早端口测试请求或者来自不同端口测试的线程可以由多线程化模块410多线程化。在一个实施例中,多线程化模块410多线程化端口测试线程302和未被测试的端口上的I/O通信,使得该I/O通信和端口测试例程302同时执行。
现在参照图4和5,更详细地说明多线程化模块410的操作。多线程化模块410管理用于端口测试的线程302以及用于其它计算任务例如多端口适配器210上的I/O通信的线程的执行,这里将这些线程统称作线程502。在一个实施例中,多线程化模块410在多端口主机适配器210的处理器(未示出)上执行第一线程504。多线程化模块410可以交换第一线程504(以箭头506表示)与下一个线程508。这意味着第一线程504被置于等待或保持状态,并且下一个线程508在共享处理器上执行。在特定实施例中,从运行队列510中取得表示下一个线程508的条目414。
在一个实施例中,多线程化模块410确定何时交换线程502。多线程化模块410可以包括定时器,使得多线程化模块410在预定时间间隔之后切换线程502(时间分片、抢占式多线程化)。每当交换线程502时,可以将定时器复位为预定值,例如一秒。可选地,线程502可以指示时间间隔。如果指示了时间间隔,则在被中断之前需要更多时间的线程502不被早熟地中断。
可选地,在特定实施例中,多线程化模块410可以不抢占线程502。相反,线程502可以包括通知多线程化模块410进行交换的命令。例如,可以发出放弃(yield)或空闲命令,其表示现在可以交换线程502,以便不浪费处理器循环。
一旦多线程化模块410确定了要交换线程502,则多线程化模块410存储与端口测试例程相关联的线程504的端口上下文。端口上下文还可以包括与端口测试相关的状态信息。例如,可以将表示初始化完成的状态标志存储在端口上下文中。在一个实施例中,将端口上下文存储在非易失性存储装置中。接下来,多线程化模块410读取用于下一个端口508的端口上下文,并且开始下一个线程508的执行(箭头506移到线程508的点)。端口上下文可以包括如上所述的静态信息,或者由先前执行的线程302更新以便进行特定端口测试的动态信息。
在一个实施例中,运行队列510具有固定数目的条目。当线程502完成时,调度器408可以添加来自等待队列412的线程502。另外,其它调度器如I/O通信调度器(未示出)可以添加I/O通信线程。可以将新线程添加到队列510的前部。以这种方式,多线程化模块410允许端口测试线程302和其它非端口测试线程如I/O通信的多线程化。
多线程化模块410可以对每个线程502进行循环,以便检查每个线程502的状态。在一个实施例中,状态是“就绪”或“阻塞”。如果状态是“就绪”,则交换线程502并且恢复/开始线程502的执行。如果状态为“阻塞”,则多线程化模块410移到队列510中的下一个线程502。典型地,线程502在等待另一个***组件时被阻塞。一旦硬件组件完成了被阻塞的任务,则线程状态返回到“就绪”。如果等待长于数秒,则线程502阻塞,使得其它线程502可以使用处理器。
图5示出了基本上同时测试多个端口。在本例中,假定多端口测试请求表示要在端口1、2上执行轮回测试(“WT”)端口测试。此外假定在端口4上较早启动了WT,并且端口3未被测试。端口3正在提供I/O通信。
运行队列510示出了端口1-4的线程502的并行执行。线程504是端口1的轮回测试初始化线程,并且当前正被执行506。线程508是端口2的轮回测试初始化线程。假定时间间隔是一秒。因此,在线程504开始执行之后,非常快地执行线程508。线程504和508基本上并行执行。线程508可以在开始执行之前不等待线程504完成。
运行队列510中的下一个线程502可以是使用端口3的I/O通信线程512。I/O通信线程512可以传输I/O数据的某部分,以恢复常规I/O操作。由于较早启动了端口4的轮回测试,因此下一个线程502可以是端口4的传送测试数据线程514。假定端口1的初始化线程504完成,则下一个线程可以是端口1的传送测试数据线程516。
以这种方式,端口1、2和4的端口测试例程可以与端口3上的I/O通信同时执行。优选地,多线程化模块410对于由主机适配器210的处理器执行的所有命令使用运行队列510。因此,本发明允许端口测试线程302与其它I/O通信操作交织/多线程化。另外,本发明根据需要使单独端口离线以便进行端口测试。此外,本发明多线程化/交织线程502。本发明包括将端口测试例程214划分成独立的可执行线程502。
在特定实施例中,多端口主机适配器210的处理器(未示出)执行非多线程化操作***(OS)。因此,多线程化模块410提供OS没有这种支持的线程多线程化。然而,本领域的技术人员应当认识到,多线程化模块410的特定实施例可以与多线程化OS协作,使得不重复上述公共任务。本发明可以采用或不采用多端口主机适配器210的处理器的多线程化操作***来实现。
图6示出了用于帮助多端口主机适配器的端口测试的装置600的一个实施例。装置600包括主机适配器602。主机适配器602包括与关于图2在主机适配器210中所述基本上相同的功能性和硬件。另外,适配器602包括控制器604、传送器606、以及接收器608。
控制器604可以包括中央处理单元,其被配置成执行存储在存储器208中的微代码,以管理适配器602的操作。传送器606通过端口212将数据包传送到主机106。接收器608通过端口202从主机106接收数据包。当然,在特定实施例中,每个端口212可以包括单独的传送器606和接收器608。在一个实施例中,传送器606和接收器608分别将电信号转换成光信号,并且反之亦然。
控制器604还包括在功能性上与关于图4所述的测试模块400基本上类似的测试模块610。测试模块610与对应的子***测试模块612接口,其中子***测试模块612可以驻留在主机或主机适配器602的子***例如存储子***104(参见图1)中。
子***测试模块612包括启动模块614、确认模块616、以及轮询模块618。子***测试模块612可以作为软件、硬件或者两者的组合来实现。优选地,子***测试模块612在主机或子***的一个或多个处理器的控制之下操作。
启动模块614将多端口测试请求620发送到控制器604。多端口测试请求620标识要对其执行端口测试例程214(参见图2)的适配器602上的一个或多个端口212。优选地,在多端口测试请求620中包括多个端口212反映并行测试多个端口212的愿望。如果期望串行测试多个端口212,则可以在单独的多端口测试请求620中引用每个端口212。
典型地,多端口测试请求620是沿着连接子***测试模块612和控制器604的通信总线传递的消息。控制器604解释消息620,并且将消息620传递到测试模块610。如上面关于测试模块400(参见图4)所述,测试模块610使用调度器408和多线程化模块410多线程化端口测试线程302,以并行测试多个端口212。
在特定实施例中,多端口测试请求620不包括表示这些端口212要继续服务I/O任务的特定端口212。因此,控制器604使包括在多端口测试请求620中的端口212离线,并且保持未被测试的端口212在线。然后,控制器604多线程化这些端口212的I/O任务和用于被测试端口212的端口测试线程302。
响应于多端口测试请求620,控制器604发送确认622。在一个实施例中,端口测试模块402发送确认622。确认622由确认模块616接收,并且传达到轮询模块618。
轮询模块618结束与控制器604的通信会话。这允许最初启动多端口测试请求的控制处理器206(参见图2)恢复正常操作。另外,控制器604周期性地将状态查询624发送到控制器604。可以每数秒钟、数分钟等发送状态查询624。响应于状态查询624,测试模块610发送报告消息。报告消息可以表示任何端口测试是否已经完成,并且如果是,则表示什么结果(即,通过或失败)。未完成的测试的报告消息可以由轮询模块618处理。如果一个或多个端口测试完成,则轮询模块618可以将该信息传达到用户接口和/或输出设备。
图7示出了用于帮助多端口主机适配器的端口测试的方法700的流程图。现在参照图2、4和7,一旦端口测试例程214被编写或修改成适应多端口主机适配器210,则方法700开始。首先,将端口测试例程214划分成多个线程302。每个线程302包括测试例程214的完整段。优选地,线程302是独立可执行的,并且对线程302执行的特定顺序具有最小的依赖性。另外,线程302被设计成最小化执行时间和切换开销。线程302可以随同主机适配器210的其它微代码一起存储。
接下来,子***或其它控制处理器206可以启动多端口测试请求如轮回测试。典型地,这是由子***的技术人员执行的故障排除实践的一部分。响应于多端口测试请求,测试模块204A、204B针对特定端口测试和特定端口来调度706该多个线程302的执行。在多端口测试请求中包括了多个端口212的情况下,测试模块204A、204B的调度器408调度用于测试每个端口212的线程302,使得线程302被交织。换句话说,执行测试第一端口212的线程302所花的时间与执行测试第二端口212的线程302所花的时间大约被平分。
最后,多线程化708线程302的执行,使得并行执行第一端口212和第二端口212的端口测试。在一个实施例中,多线程化模块410在使用共享处理器和等待状态之间以抢占方式切换线程302(时间分片)。在其它实施例中,多线程化模块410响应来自线程302的信号,该信号表示不能发生切换(非抢占式)。多线程化模块410可以独立于或者结合主机适配器210的多线程化嵌入式操作***而工作。另外,多线程化模块410多线程化端口测试线程302与未被测试的端口上的I/O任务。
图8示出了用于帮助多端口主机适配器的端口测试的方法800的流程图。通过接收804多端口测试请求620(参见图6),方法800开始802。接下来,可以确定806在多端口端口测试中是否正在测试主机适配器210的所有可用端口212。测试模块204A、204B可以比较列在多端口测试请求620中的端口与主机适配器210的端口212。如果不是所有端口都被正在测试,则测试模块204A、204B调度808与端口测试线程302的执行并行执行I/O任务。
接下来,如果所有端口212都正在被测试或者I/O任务已被设置成包括在端口线程302的多线程化中,则测试模块204A、204B确认810多端口测试请求620。这允许启动多端口测试请求620的子***或其它控制器恢复正常操作。接下来,在一个实施例中,测试模块204A、204B配置812主机适配器210以便进行端口测试。如上所述,这可以包括保存当前正在使用中的端口的状态。优选地,为多个端口测试执行配置步骤812一次,使得总体端口测试需要较少的时间。
然后,测试模块204A、204B结束814与控制处理器206(以及,潜在地,利用控制处理器206的应用)的通信会话。然后,控制处理器206自由地执行除了端口测试之外的其它操作。测试模块204A、204B使在端口测试中涉及的每个端口212离线816。未被测试的端口保持在线,以便继续处理I/O任务。
接下来,测试模块204A、204B调度820用于测试端口212的线程302的执行。在一个实施例中,调度器408调度线程302,使得与第二端口212的测试同时完成第一端口212的测试。如果不是所有端口212都正被测试806并且I/O任务被排入队列,则调度器408可以交织I/O任务与端口测试任务302,使得并行执行端口测试和I/O任务。
多线程化模块410多线程化822被调度的线程以及正在进行处理时所添加的任何新线程的执行。如上所述,多线程化可以是抢占式(时间分片)或非抢占式的。多线程化模块410确定824时间是否过去、或者是否满足了另一个条件使得应当切换当前执行线程。如果是,则多线程化模块410确定是否有另一个线程可用于执行。如果是,多线程化模块410切换828执行线程与可用于执行的线程,并且线程的多线程化执行822继续。同样地,如果尚未满足用于线程切换的足够时间或者切换条件,则多线程化模块410继续多线程化执行822。
如果满足切换条件并且没有更多的线程可用,则测试模块204A、204B将主机适配器210重新配置到正常操作。换句话说,将所有缓冲器以及存储器208和被测试端口的配置设置恢复到进行多端口端口测试之前的状态。最后,方法800结束832。
本领域的技术人员应当很快地认识到本发明所提供的益处。与串行执行多端口测试相比,同时进行端口测试的能力提供了显著的时间节省。此外,控制处理器开始多个端口测试然后在进行测试时恢复正常操作的能力提供了附加的时间节省效率。另外,与使整个适配器离线以进行端口测试的情况相比,通过保持未被测试的端口在线以及可用于I/O任务,多端口主机适配器提供了更高的I/O吞吐量。最后,为多个端口测试配置和重新配置主机适配器一次节省了附加的处理时间。节省时间可以增加利用本发明范围内的主机适配器的***和子***中的显著益处。
本发明可以采用其它特定形式来实施而不脱离其精神或基本特征。所述实施例应当在所有方面都被认为是仅仅说明性的而非限制性的。因此,本发明的范围由所附权利要求而非前面描述表示。处于权利要求的等价含义和范围内的所有改变都要包括在本发明的范围内。
在本说明书中描述的很多功能单元被标注为模块,以便特别地强调它们的实现无关性。例如,模块可被实现为包括VLSI电路或门阵列的硬件电路、成品半导体如逻辑芯片、晶体管或其它分立组件。模块也可采用可编程硬件设备如场可编程门阵列、可编程阵列逻辑电路、可编程逻辑设备等来实现。
模块也可采用软件实现以便由各种处理器执行。所标识的执行代码模块可以例如包括计算机指令的一个或多个物理或逻辑块,这些计算机指令可以例如被组织为对象、过程、函数或其它构造。但是,所标识的模块的可执行代码无需在物理上位于一起,而是可以包括存储在不同位置上的不同指令,当在逻辑上连接在一起,这些指令组成该模块,并且实现该模块的所述目的。
实际上,可执行代码的模块可以是单条指令,或者很多指令,并且甚至可以在不同的程序之间并且跨越若干存储器设备分布在若干不同的代码段上。类似地,操作数据可以被标识,并且这里被示出在模块内,并且可以以任何适合的形式实施,并且在任何适合类型的数据结构内组织。操作数据可以被集中为单个数据集,或者分布在多个位置上,包括分布在不同的存储设备上,并且可以至少部分地仅仅作为***或网络上的电子信号而存在。
在本说明书中对“选择实施例”、“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特性、结构或特征包括在本发明的至少一个实施例中。这样,在遍及本说明书的各个地方出现短语“选择实施例”、“在一个实施例中”、“在实施例中”不一定全都引用相同的实施例。
此外,所述特性、结构或特征可以在一个或多个实施例中以任何适合的方式组合。在下面描述中,提供了众多特定细节,例如编程、软件模块、用户选择、用户接口、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的例子,以便提供对本发明实施例的彻底理解。然而,相关领域的技术人员应当认识到,本发明可以不采用这些特定细节中的一个或多个或者采用其它方法、组件、素材等来实施。另外,公知的结构、素材或者操作未被详细地示出和描述,以便避免使本发明的各方面变得模糊。

Claims (29)

1.一种用于帮助多端口主机适配器的端口测试的装置,该装置包括:
调度器,被配置成调度多个线程的执行以测试多端口适配器的第一端口和第二端口,该测试由端口测试例程表示,这些线程包括端口测试例程的独立可执行段;以及
多线程化模块,被配置成提供该多个线程的多线程化执行,使得并行执行第一端口的端口测试和第二端口的端口测试。
2.如权利要求1所述的装置,还包括通信模块,其被配置成使第一端口和第二端口离线,同时多端口适配器的第三端口保持在线以提供输入/输出I/O通信,并且其中多线程化模块还被配置成多线程化I/O通信和涉及第一端口和第二端口的多个线程,其中该I/O通信利用第三端口。
3.如权利要求1所述的装置,还包括配置模块,其被配置成响应于单个多端口测试请求而配置多端口适配器以便进行第一端口和第二端口的端口测试。
4.如权利要求3所述的装置,其中配置模块还被配置成响应于第一端口和第二端口上的端口测试例程的完成而重新配置多端口适配器以恢复常规I/O通信。
5.如权利要求3所述的装置,还包括端口测试模块,其被配置成确认来自控制处理器的多端口测试请求、结束与控制处理器的通信会话,使得控制处理器能够恢复正常操作、以及响应于来自控制处理器的周期性状态查询而将状态报告消息发送到控制处理器。
6.如权利要求1所述的装置,其中这些线程包括测试例程的相关功能性,所述测试例程的相关功能性被编组使得每个线程的运行时间和切换开销最小化。
7.如权利要求1所述的装置,其中调度器对该多个线程的执行进行排序,使得对每个被测试端口执行每个线程。
8.如权利要求1所述的装置,其中多线程化模块存储第一端口和第二端口中的每一个的端口上下文,并且响应于恢复与每个端口相关联的线程的执行而读取端口上下文。
9.如权利要求1所述的装置,其中多线程化模块以预定的时间间隔执行每个线程。
10.一种用于帮助多端口主机适配器的端口测试的装置,该装置包括:
启动模块,被配置成将多端口测试请求发送到多端口主机适配器的控制器,多端口测试请求向端口测试例程标识多端口适配器的一个或多个端口,并且控制器包括
调度器,被配置成调度多个线程的执行以实现端口测试例程,这些线程包括独立的可执行段;以及
多线程化模块,被配置成提供该多个线程的多线程化执行,使得并行执行多端口适配器的一个端口的端口测试和任何附加端口的端口测试;
确认模块,被配置成接收来自控制器的端口测试例程的确认,端口测试例程被配置成确认多端口测试请求;
轮询模块,被配置成结束与控制器的通信会话、发送周期性状态查询、以及处理来自控制器的状态报告消息。
11.如权利要求10所述的装置,其中控制器还被配置成使至少一个端口离线,同时其它端口保持在线以便提供I/O通信,控制器多线程化I/O通信和该多个线程。
12.一种用于帮助多端口主机适配器的端口测试的***,包括:
控制处理器,被配置成管理和控制该***中的数据处理;
主机适配器,被配置成在网络上与主机通信,该主机适配器包括多个端口;
测试模块,被配置成在主机适配器的两个或更多个端口上同时执行端口测试例程,该测试模块包括调度器和多线程化模块,其中调度器被配置成调度多个线程的执行以测试主机适配器的至少两个端口,这些线程包括端口测试例程的独立可执行段,多线程化模块被配置成提供该多个线程的多线程化执行,使得并行执行该至少两个端口的端口测试和在任何未被测试的端口上继续的I/O处理;以及
测试接口,被配置成与测试模块通信,以启动端口测试并且报告端口测试结果。
13.如权利要求12所述的***,其中测试模块还包括通信模块,其被配置成使第一端口和第二端口离线,同时主机适配器的第三端口保持在线以提供I/O通信;并且其中多线程化模块还被配置成多线程化I/O通信和涉及第一端口和第二端口的多个线程,其中该I/O通信利用第三端口。
14.如权利要求13所述的***,其中测试模块还包括配置模块,其被配置成响应于单个多端口测试请求而配置主机适配器以便进行第一端口和第二端口的端口测试。
15.如权利要求14所述的***,其中配置模块还被配置成响应于第一端口和第二端口上的端口测试例程的完成而重新配置主机适配器以恢复常规I/O通信。
16.如权利要求14所述的***,还包括端口测试模块,其被配置成确认多端口测试请求、结束由多端口测试请求启动的通信会话,以及响应于周期性状态查询而发送状态报告消息。
17.如权利要求16所述的***,其中这些线程包括测试例程的相关功能性,所述测试例程的相关功能性被编组使得每个线程的运行时间和切换开销最小化。
18.如权利要求17所述的***,其中多线程化模块存储第一端口和第二端口中的每一个的端口上下文,并且响应于恢复与每个端口相关联的线程的执行而读取端口上下文。
19.如权利要求18所述的***,其中多线程化模块在切换到另一个线程或I/O任务之前以预定的时间间隔执行每个线程。
20.一种用于帮助多端口主机适配器的端口测试的方法,该方法包括:
将端口测试例程划分成多个线程,每个线程包括该例程的段;
调度该多个线程的执行,以便测试主机适配器的第一端口和第二端口,其中该测试由端口测试例程表示;以及
多线程化该多个线程的执行,使得并行执行第一端口的端口测试和第二端口的端口测试。
21.如权利要求20所述的方法,还包括:
使第一端口和第二端口离线,同时多端口适配器的第三端口保持在线以提供输入/输出I/O通信;
多线程化I/O通信和涉及第一端口和第二端口的多个线程,其中该I/O通信利用第三端口。
22.如权利要求20所述的方法,还包括响应于单个多端口测试请求而配置多端口适配器以便进行第一端口和第二端口的端口测试。
23.如权利要求22所述的方法,还包括响应于第一端口和第二端口上的端口测试例程的完成而重新配置多端口适配器以恢复常规I/O通信。
24.如权利要求22所述的方法,还包括:
确认来自控制处理器的多端口测试请求;
结束与控制处理器的通信会话,使得控制处理器能够恢复正常操作;以及
响应于来自控制处理器的周期性状态查询而将状态报告消息发送到控制处理器。
25.如权利要求20所述的方法,其中划分端口测试例程还包括将测试例程的相关功能性编组成线程,使得最小化每个线程的运行时间。
26.如权利要求20所述的方法,其中调度该多个线程的执行还包括对该多个线程的执行进行排序,使得对每个被测试端口执行每个线程。
27.如权利要求20所述的方法,其中多线程化该多个线程的执行还包括存储第一端口和第二端口中的每一个的端口上下文,并且响应于恢复与每个端口相关联的线程的执行而读取端口上下文。
28.如权利要求20所述的方法,其中多线程化该多个线程的执行还包括在切换线程之前以预定的时间间隔执行每个线程。
29.一种用于帮助多端口主机适配器的端口测试的装置,该装置包括:
用于将端口测试例程划分成多个线程的部件,每个线程包括该例程的段;
用于调度该多个线程的执行以便测试主机适配器的第一端口和第二端口的部件,其中该测试由端口测试例程表示;以及
用于多线程化该多个线程的执行使得并行执行第一端口的端口测试和第二端口的端口测试的部件。
CNB2005100994677A 2004-10-12 2005-09-06 帮助多端口主机适配器的端口测试的装置、***和方法 Expired - Fee Related CN100365589C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/963,475 US7480840B2 (en) 2004-10-12 2004-10-12 Apparatus, system, and method for facilitating port testing of a multi-port host adapter
US10/963,475 2004-10-12

Publications (2)

Publication Number Publication Date
CN1760839A CN1760839A (zh) 2006-04-19
CN100365589C true CN100365589C (zh) 2008-01-30

Family

ID=36182221

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100994677A Expired - Fee Related CN100365589C (zh) 2004-10-12 2005-09-06 帮助多端口主机适配器的端口测试的装置、***和方法

Country Status (2)

Country Link
US (1) US7480840B2 (zh)
CN (1) CN100365589C (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7461181B2 (en) * 2005-04-25 2008-12-02 Emulex Design & Manufacturing Corporation Programming of configuration serial EEPROM via an external connector
JP4337056B2 (ja) * 2005-09-12 2009-09-30 ソニー株式会社 通信装置、通信状態検出方法及び通信状態検出プログラム
US7907532B2 (en) * 2005-11-23 2011-03-15 Jds Uniphase Corporation Pool-based network diagnostic systems and methods
US8056083B2 (en) 2006-10-10 2011-11-08 Diskeeper Corporation Dividing a computer job into micro-jobs for execution
US8239869B2 (en) 2006-06-19 2012-08-07 Condusiv Technologies Corporation Method, system and apparatus for scheduling computer micro-jobs to execute at non-disruptive times and modifying a minimum wait time between the utilization windows for monitoring the resources
US9588809B2 (en) * 2006-10-10 2017-03-07 Invistasking LLC Resource-based scheduler
US20080181254A1 (en) * 2007-01-25 2008-07-31 Inventec Corporation Data transmission method
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US7831710B2 (en) * 2008-02-25 2010-11-09 International Business Machines Corporation Communication of offline status between computer systems
US8042004B2 (en) * 2008-02-25 2011-10-18 International Business Machines Corporation Diagnosing communications between computer systems
CN101645983A (zh) * 2008-08-08 2010-02-10 鸿富锦精密工业(深圳)有限公司 网络管理***及使用其测试网络设备的方法
TW201028841A (en) * 2008-10-02 2010-08-01 Ibm A method, apparatus or software for use in a computerised storage system comprising one or more replaceable units for managing testing of one or more replacement units
US8670332B2 (en) * 2008-11-07 2014-03-11 Hewlett-Packard Development Company, L.P. Systems and methods for notifying users of a network resource outage
US7900096B2 (en) * 2009-01-15 2011-03-01 International Business Machines Corporation Freeing a serial bus hang condition by utilizing distributed hang timers
US8775544B2 (en) * 2009-02-04 2014-07-08 Citrix Systems, Inc. Methods and systems for dynamically switching between communications protocols
US8990802B1 (en) * 2010-05-24 2015-03-24 Thinking Software, Inc. Pinball virtual machine (PVM) implementing computing process within a structural space using PVM atoms and PVM atomic threads
CN102183722B (zh) * 2011-02-28 2014-03-05 华为技术有限公司 芯片
US10422828B2 (en) 2011-03-01 2019-09-24 Celerint, Llc. Method and system for utilizing stand-alone controller in multiplexed handler test cell for indexless tandem semiconductor test
WO2013100748A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Watchdogable register-based i/o
US8914673B2 (en) * 2012-02-20 2014-12-16 Microsoft Corporation Distributed testing within a serial testing infrastructure
US8966321B2 (en) * 2012-05-09 2015-02-24 Ixia Logical port and layer protocol test configuration resource manager
US9003253B2 (en) * 2013-08-21 2015-04-07 Litepoint Corporation Method for testing data packet signal transceiver using coordinated transmitted data packet signal power
US9652284B2 (en) 2013-10-01 2017-05-16 Qualcomm Incorporated GPU divergence barrier
CN104133750A (zh) * 2014-08-20 2014-11-05 浪潮(北京)电子信息产业有限公司 主机与存储设备兼容适配测试方法和***
CN104181459B (zh) * 2014-08-28 2017-01-25 永济新时速电机电器有限责任公司 一种保护适配板的测试装置
CN107347013B (zh) * 2016-05-04 2020-07-07 网宿科技股份有限公司 一种基于策略的网络测量方法、***及测量机
KR20180016680A (ko) * 2016-08-04 2018-02-19 삼성전자주식회사 저장 장치, 그것을 테스트 하는 테스트 시스템 및 방법
CN110661671A (zh) * 2018-06-28 2020-01-07 中兴通讯股份有限公司 业务检测方法、装置及设备、存储介质
CN112015681B (zh) * 2020-08-19 2022-08-26 苏州鑫信腾科技有限公司 一种io端口的处理方法、装置、设备和介质
CN113760709A (zh) * 2020-09-29 2021-12-07 北京沃东天骏信息技术有限公司 一种自动化测试方法和装置
CN112486146A (zh) * 2020-12-07 2021-03-12 合安科技技术有限公司 一种路灯控制器品质检测方法和对应的检测终端
CN115015742B (zh) * 2022-08-10 2022-10-11 南京派格测控科技有限公司 多站异步并行测试芯片的方法、***、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4964036A (en) * 1988-12-21 1990-10-16 International Business Machines Corporation Channel hardware diagnostic apparatus and method
CN1346467A (zh) * 1999-04-06 2002-04-24 开博索福公司 监测数据端口连接状态的***
US20020089972A1 (en) * 2000-11-17 2002-07-11 Andrew Chang High-performance network switch

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4086636A (en) * 1977-02-28 1978-04-25 Xerox Corporation Restore method and apparatus for disk drive
US4536431A (en) * 1983-08-05 1985-08-20 Wyckoff Robert L Method of texturing a surface and articles textured by the method
DE3710922C1 (de) * 1987-04-01 1988-08-11 Werner Cielker Zange zum Verschieben von flexiblem Strangmaterial
US4939735A (en) * 1988-07-21 1990-07-03 International Business Machines Corporation Information handling system having serial channel to control unit link
US5023873A (en) * 1989-06-15 1991-06-11 International Business Machines Corporation Method and apparatus for communication link management
EP0534030B1 (en) * 1991-09-26 1996-07-10 International Business Machines Corporation A frame transfer device for a fixed format frame transmission network
JPH05118955A (ja) 1991-10-29 1993-05-14 Nec Corp 光伝送装置の折返し試験方式
US5905744A (en) * 1997-09-30 1999-05-18 Lsi Logic Corporation Test mode for multifunction PCI device
US6554963B1 (en) * 1998-11-02 2003-04-29 Albany International Corp. Embossed fabrics and method of making the same
US6904544B2 (en) * 2001-01-30 2005-06-07 Sun Microsystems, Inc. Method, system, program, and data structures for testing a network system including input/output devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4964036A (en) * 1988-12-21 1990-10-16 International Business Machines Corporation Channel hardware diagnostic apparatus and method
CN1346467A (zh) * 1999-04-06 2002-04-24 开博索福公司 监测数据端口连接状态的***
US20020089972A1 (en) * 2000-11-17 2002-07-11 Andrew Chang High-performance network switch

Also Published As

Publication number Publication date
CN1760839A (zh) 2006-04-19
US7480840B2 (en) 2009-01-20
US20060085699A1 (en) 2006-04-20

Similar Documents

Publication Publication Date Title
CN100365589C (zh) 帮助多端口主机适配器的端口测试的装置、***和方法
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
US4897833A (en) Hierarchical arbitration system
US4887076A (en) Computer interconnect coupler for clusters of data processing devices
US7739432B1 (en) Command switching for multiple initiator access to a SATA drive
JP5160300B2 (ja) 仮想レーン資源を動的に再割当てするシステムおよび方法
CN100382031C (zh) 连接路径分组的装置、***和方法
US7640549B2 (en) System and method for efficiently exchanging data among processes
JP2000099448A (ja) ディジタル・デ―タ処理システムにおいて複数のホスト・コンピュ―タ間で記憶サブシステムなどの資源の共用を容易にするためのシステムおよび方法。
JPH04215158A (ja) データ転送制御方法及びインタフェース・システム
CN112463614A (zh) 一种基于硬件板卡接入的软件虚拟化测试环境构建方法
CN103729329A (zh) 核间通信装置及方法
US7962676B2 (en) Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords
US10423333B2 (en) System and method for scalable processing of abort commands in a host bus adapter system
US8055934B1 (en) Error routing in a multi-root communication fabric
CN109828945A (zh) 一种业务报文处理方法及***
US6732212B2 (en) Launch raw packet on remote interrupt
CN114363269A (zh) 一种消息传输方法、***、设备以及介质
CN109426643A (zh) Usb接口请求调度方法、装置及设备
KR20170117326A (ko) 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치
AU4358700A (en) Method and system for multi-initiator support to streaming devices in a fibre channel network
US6760870B1 (en) Algorithm for resynchronizing a bit-sliced crossbar
CN100563175C (zh) 获取设备运行状态的方法、装置及***
US7076576B2 (en) Data transfer in multi-node computer system
US9015717B2 (en) Method for processing tasks in parallel and selecting a network for communication

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
TR01 Transfer of patent right

Effective date of registration: 20171120

Address after: Grand Cayman, Cayman Islands

Patentee after: GLOBALFOUNDRIES INC.

Address before: American New York

Patentee before: Core USA second LLC

Effective date of registration: 20171120

Address after: American New York

Patentee after: Core USA second LLC

Address before: American New York

Patentee before: International Business Machines Corp.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080130

Termination date: 20190906

CF01 Termination of patent right due to non-payment of annual fee