精华内容
下载资源
问答
  • SDH原理--3.开销和指针

    千次阅读 2021-05-17 10:45:09
    3.开销和指针 目标: 3.1 开销 3.1.1 段开销 3.1.2 通道开销 1.高阶通道开销:HP-POH 2.低阶通道开销:LP-POH 想一想: 3.2 指针 3.2.1 管理单元指针(AU-PTR) 3.2.2 支路单元指针(TU-PTR) 想一想: ...

    3.开销和指针

    目标:

    3.1 开销

    3.1.1 段开销

    3.1.2 通道开销

    1.高阶通道开销:HP-POH

    2.低阶通道开销:LP-POH

    想一想:

    3.2 指针

    3.2.1 管理单元指针(AU-PTR)

    3.2.2 支路单元指针(TU-PTR)

    想一想:

    小结

    习题


    3.开销和指针

    目标:

    1. 掌握段层监控的实现——段开销各字节功能。 
    2. 掌握通道层监控的实现——通道开销各字节功能。
    3. 掌握基本告警和性能的监测是由哪些开销字节实现的。
    4. 了解指针——AU-PTR、TU-PTR的工作机理。
    5. 建立SDH监控层层细化的概念。

    3.1 开销

    前面讲过开销的功能是完成对SDH信号提供层层细化的监控管理功能,监控的分类可分为段层监控、通道层监控。段层的监控又分为再生段层和复用段层的监控,通道层监控分为高阶通道层和低阶通道层的监控。由此实现了对STM-N层层细化的监控。例如对2.5G系统的监控,再生段开销对整个STM-16信号监控,复用段开销细化到其中16个STM-1的任一个进行监控,高阶通道开销再将其细化成对每个STM-1中VC4的监控,低阶通道开销又将对VC4的监控细化为对其中63个VC12的任一个VC12进行监控,由此实现了从对2.5Gbit/s级别到2Mbit/s级别的多级监控手段。

    那么,这些监控功能是怎样实现的呢?它是由不同的开销字节来实现的。

    3.1.1 段开销

    STM-N帧的段开销位于帧结构的(1-9)行×(1-9N)列。注:第4行为AU-PTR除外。我们以STM-1信号为例来讲述段开销各字节的用途。对于STM-1信号,段开销包括位于帧中的(1-3)行×(1-9)列的RSOH和位于(5-9)行×(1-9)列的MSOH。如图3-1所示。

                                  

                                                                     图3-1 STM-N帧的段开销字节示意图

    图3-1中画了再生段开销和复用段开销在STM-1帧中的位置,它们的区别是什么呢?区别在于监控的范围不同,RSOH是对应一个大的范围—STM-N,MSOH是对应这个大的范围中的一个小的范围—STM-1。

    • 定帧字节A1和A2

    定帧字节的作用有点类似于指针,起定位的作用。我们知道SDH可从高速信号中直接分/插出低速支路信号,为什么能这样呢?原因就是收端能通过指针——AU-PTR、TU-PTR在高速信号中定位低速信号的位置。但这个过程的第一步是收端必须在收到的信号流中正确地选择分离出各个STM-N帧,也就是先要定位每个STM-N帧的起始位置在哪里,然后再在各帧中定位相应的低速信号的位置,就象在长长的队列中定位一个人时,要先定位到某一个方队,然后在本方队中再通过这个人的所处行列数定位到他。A1、A2字节就是起到定位一个方队的作用,通过它,收端可从信息流中定位、分离出STM-N帧,再通过指针定位到帧中的某一个低速信号。

    收端是怎样通过A1、A2字节定位帧的呢?A1、A2有固定的值,也就是有固定的比特图案,A1:11110110(f 6H),A2:00101000(28H)。收端检测信号流中的各个字节,当发现连续出现3N个f 6H,又紧跟着出现3N个28H字节时(在STM-1帧中A1和A2字节各有3个),就断定现在开始收到一个STM-N帧,收端通过定位每个STM-N帧的起点,来区分不同的STM-N帧,以达到分离不同帧的目的,当N=1时,区分的是STM-1帧。

    当连续5帧以上(625μs)收不到正确的A1、A2字节,即连续5帧以上无法判别帧头(区分出不同的帧),那么收端进入帧失步状态,产生帧失步告警——OOF;若OOF持续了3ms则进入帧丢失状态——设备产生帧丢失告警LOF,下插AIS信号,整个业务中断。在LOF状态下若收端连续1ms以上又处于定帧状态,那么设备回到正常状态。

    技术细节:

    STM-N信号在线路上传输要经过扰码,主要是为了便于收端能提取线路定时信号,但又为了在收端能正确的定位帧头A1、A2,又不能将A1、A2扰码。为兼顾这两种需求,于是STM-N信号对段开销第一行的所有字节上:1行×9N列(不仅包括A1、A2字节)不扰码,而进行透明传输,STM-N帧中的其余字节进行扰码后再上线路传输。这样又便于提取STM-N信号的定时,又便于收端分离STM-N信号。

    • 再生段踪迹字节:J0

    该字节被用来重复地发送段接入点标识符,以便使接收端能据此确认与指定的发送端处于持续连接状态。在同一个运营者的网络内该字节可为任意字符,而在不同两个运营者的网络边界处要使设备收、发两端的J0字节相同——匹配。通过J0字节可使运营者提前发现和解决故障,缩短网络恢复时间。

    J0字节还有一个用法,在STM-N帧中每一个STM-1帧的J0字节定义为STM的标识符C1,用来指示每个STM-1在STM-N中的位置——指示该STM-1是STM-N中的第几个STM-1(间插层数)和该C1在该STM-1帧中的第几列(复列数),可帮助A1、A2字节进行帧识别。

    • 数据通信通路(DCC)字节:D1-D12

    SDH的一大特点就是OAM功能的自动化程度很高,可通过网管终端对网元进行命令的下发、数据的查询,完成PDH系统所无法完成的业务实时调配、告警故障定位、性能在线测试等功能。那么这些用于OAM的数据是放在哪儿传输的呢?用于OAM功能的数据信息——下发的命令,查询上来的告警性能数据等,是通过STM-N帧中的D1-D12字节传送的。也就是说用于OAM功能的相关数据是放在STM-N帧中的D1-D12字节处,由STM-N信号在SDH网络上传输的。这样D1-D12字节提供了所有SDH网元都可接入的通用数据通信通路,作为嵌入式控制通路(ECC)的物理层,在网元之间传输操作、管理、维护(OAM)信息,构成SDH管理网(SMN)的传送通路。

    其中,D1-D3是再生段数据通路字节(DCCR),速率为3×64kbit/s=192kbit/s,用于再生段终端间传送OAM信息;D4-D12是复用段数据通路字节(DCCM),共9×64kbit/s=576kbit/s,用于在复用段终端间传送OAM信息。

    DCC通道速率总共768kbit/s,它为SDH网络管理提供了强大的通信基础。

    • 公务联络字节:E1和E2

    分别提供一个64kbit/s的公务联络语声通道,语音信息放于这两个字节中传输。

    E1属于RSOH,用于再生段的公务联络;E2属于MSOH,用于终端间直达公务联络。

    例如网络如下:

                                     

                                                                                    图3-2 网络示意图

    若仅使用E1字节作为公务联络字节,A、B、C、D四网元均可互通公务,为什么?因为终端复用器的作用是将低速支路信号分/插到SDH信号中,所以要处理RSOH和MSOH,因此用E1、E2字节均可通公务。再生器作用是信号的再生,只需处理RSOH,所以用E1字节也可通公务。

    若仅使用E2字节作为公务联络字节,那么就仅有A、D间可以通公务电话了,因为B、C网元不处理MSOH,也就不会处理E2字节。

    • 使用者通路字节:F1

    提供速率为64kbit/s数据/语音通路,保留给使用者(通常指网络提供者)用于特定维护目的的临时公务联络。

    • 比特间插奇偶校验8位码BIP-8:B1

    这个字节就是用于再生段层误码监测的(B1位于再生段开销中)。

    监测的机理是什么呢?首先我们先讲一讲BIP-8奇偶校验。

    若某信号帧由4个字节A1=00110011、A2=11001100、A3=10101010、A4=00001111,那么将这个帧进行BIP-8奇偶校验的方法是以8bit为一个校验单位(1个字节),将此帧分成4块(每字节为一块,因1个字节为8bit正好是一个校验单元)按图3-3方式摆放整齐:

                                                    

                                                                                           图3-3 BIP-8奇偶校验示意图

    依次计算每一列中1的个数,若为奇数,则在得数(B)的相应位填1,否则填0。也就是B的相应位的值使A1A2A3A4摆放的块的相应列的1的个数为偶数。这种校验方法就是BIP-8奇偶校验,实际上是偶校验,因为保证的是1的个数为偶。B的值就是将A1A2A3A4进行BIP-8校验所得的结果。

    B1字节的工作机理是:发送端对本帧(第N帧)加扰后的所有字节进行BIP-8偶校验,将结果放在下一个待扰码帧(第N+1帧)中的B1字节;接收端将当前待解扰帧(第N帧)的所有比特进行BIP-8校验,所得的结果与下一帧(第N+1帧)解扰后的B1字节的值相异或比较,若这两个值不一致则异或有1出现,根据出现多少个1,则可监测出第N帧在传输中出现了多少个误码块。

    技术细节:

    高速信号的误码性能是用误码块来反映的。因此STM-N信号的误码情况实际上是误码块的情况。从BIP-8校验方式可看出,校验结果的每一位都对应一个比特块,例如图3-3中的一列比特,因此B1字节最多可从一个STM-N帧检测出传输中所发生的8个误码块(BIP-8的结果共8位,每位对应一列比特—— 一个块)。

     

    • 比特间插奇偶校验N×24位的(BIP-N %24)字节:B2

    B2的工作机理与B1类似,只不过它检测的是复用段层的误码情况。B1字节是对整个STM-N帧信号进行传输误码检测的,一个STM-N帧中只有一个B1字节(为什么?稍后讲STM-1复用成STM-N时段开销的复用间插情况时你就会知道了),而B2字节是对STM-N帧中的每一个STM-1帧的传输误码情况进行监测,STM-N帧中有N %3个B2字节,每三个B2对应一个STM-1帧。检测机理是发端B2字节对前一个待扰的STM-1帧中除了RSOH(RSOH包括在B1对整个STM-N帧的校验中了)的全部比特进行BIP-24计算,结果放于本帧待扰STM-1帧的B2字节位置。收端对当前解扰后STM-1的除了RSOH的全部比特进行BIP-24校验,其结果与下一STM-1帧解扰后的B2字节相异或,根据异或后出现1的个数来判断该STM-1在STM-N帧中的传输过程中出现了多少个误码块。可检测出的最大误码块个数是24个。注:在发端写完B2字节后,相应的N个STM-1帧按字节间插复用成STM-N信号(有3N个B2),在收端先将STM-N信号分间插成N %STM-1信号,再校验这N组B2字节。

    • 自动保护倒换(APS)通路字节:K1、K2(b1-b5)

    这两个字节用作传送自动保护倒换(APS)信令,用于保证设备能在故障时自动切换,使网络业务恢复——自愈,用于复用段保护倒换自愈情况。

    • 复用段远端失效指示(MS-RDI)字节:K2(b6-b8)

    这是一个对告的信息,由收端(信宿)回送给发端(信源),表示收信端检测到来话故障或正收到复用段告警指示信号。也就是说当收端收信劣化,这时回送给发端MS-RDI告警信号,以使发端知道收端的状态。若收到的K2的b6-b8为110码,则此信号为对端对告的MS-RDI告警信号;若收到的K2的b6-b8为111,则此信号为本端收到MS-AIS信号,此时要向对端发MS-RDI信号,即在发往对端的信号帧STM-N的K2的b6-b8放入110比特图案。

    • 同步状态字节:S1(b5-b8)

    不同的比特图案表示ITU-T的不同时钟质量级别,使设备能据此判定接收的时钟信号的质量,以此决定是否切换时钟源,即切换到较高质量的时钟源上。

    S1(b5-b8)的值越小,表示相应的时钟质量级别越高。

    • 复用段远端误码块指示(MS-REI)字节:M1

    这是个对告信息,由接收端回发给发送端。M1字节用来传送接收端由BIP-N×24(B2)所检出的误块数,以便发送端据此了解接收端的收信误码情况。

    • 与传输媒质有关的字节:△

    △字节专用于具体传输媒质的特殊功能,例如用单根光纤做双向传输时,可用此字节来实现辨明信号方向的功能。

    • 国内保留使用的字节:×
    • 所有未做标记的字节的用途待由将来的国际标准确定。

    诀窍:

    各SDH生产厂家,往往会利用STM帧中段开销的未使用字节来实现一些自己设备的专用的功能。

    STM-N帧中的段开销——RSOH、MSOH的各字节的使用方法,到此就已讲完了,通过这些字节,实现了STM-N信号的段层的OAM功能。

    N个STM-1帧通过字节间插复用成STM-N帧,段开销究竟是怎样进行复用的呢?字节间插复用时各STM-1帧的AU-PTR和payload的所有字节原封不动的按字节间插复用方式复用,而段开销的复用方式就有所区别。段开销的复用规则是N个STM-1帧以字节间插复用成STM-N帧时,4个STM-1以字节交错间插方式复用成STM-4时,开销的复用并非简单的交错间插,除段开销中的A1、A2、B2字节、指针和净负荷按字节交错间插复用进行STM-4外,各STM-1中的其它开销字节经过终结处理,再重新插入STM-4相应的开销字节中。图3-4是STM-4帧的段开销结构图:

                                                                                

                                                                                                                                        图3-4 STM-4 SOH字节安排

    在STM-N中只有一个B1,有N×3个B2字节(因为B2为BIP-24检验的结果,故每个STM-1帧有3个B2字节,3×8=24位)。STM-N帧中有D1—D12各一个字节;E1、E2各一个字节;一个M1字节;K1、K2各一个字节。想想看这是为什么?

    图3-5是STM-16的段开销结构图。

                                                                     

                                                                                                           图3-5 STM-16 SOH字节安排

    3.1.2 通道开销

    段开销负责段层的OAM功能,而通道开销负责的是通道层的OAM功能。就类似于在货物装在集装箱中运输的过程中,不仅要监测一集装箱的货物的整体损坏情况(SOH),还要知道集装箱中某一件货物的损坏情况(POH)。

    根据监测通道的“宽窄”(监测货物的大小),通道开销又分为高阶通道开销和低阶通道开销。在本课程我们指高阶通道开销是对VC4级别的通道进行监测,可对140Mbit/s在STM-N帧中的传输情况进行监测;低阶通道开销是完成VC12通道级别的OAM功能,也就是监测2Mbit/s在STM-N帧中的传输性能。

    技术细节:

    VC3中的POH依34Mbit/s复用路线选取的不同,可划在高阶或低阶通道开销范畴,其字节结构和作用与VC4的通道开销相同,因为34Mbit/s信号复用进STM-N的方式用得较少,故在这里就不对VC3的POH进行专门的讲述了。

    1.高阶通道开销:HP-POH

    高阶通道开销的位置在VC4帧中的第一列,共9个字节,如图3-6所示。

                                             

                                                                          图3-6 高阶通道开销的结构图

    • J1:通道踪迹字节

    AU-PTR指针指的是VC4的起点在AU-4中的具体位置,即VC4的第一个字节的位置,以使收信端能据此AU-PTR的值,正确的在AU-4中分离出VC4。J1正是VC4的起点,那AU-PTR所指向的正是J1字节的位置。

    该字节的作用与J0字节类似:被用来重复发送高阶通道接入点标识符,使该通道接收端能据此确认与指定的发送端处于持续连接(该通道处于持续连接)状态。要求也是收发两端J1字节相匹配即可。华为公司的设备默认的发/收J1字节的值是:HuaWei SBS。当然J1字节可按需要进行设置、更改。

    • B3:

    通道BIP-8码B3字节负责监测VC4在STM-N帧中传输的误码性能,也就监测140Mbit/s的信号在STM-N帧中传输的误码性能。监测机理与B1、B2相类似,只不过B3是对VC4帧进行BIP-8校验。

    若在收端监测出误码块,那么设备本端的性能监测事件—HP-BBE(高阶通道背景误码块)显示相应的误块数,同时在发端相应的VC4通道的性能监测事件—HP-REI(高阶通道远端误块指示)显示出收端收到的误块数。B1、B2字节也与此类似,通过这种方式你可实时监测STM-N信号传输的误码性能。

    技术细节:

    收端B1检测出误码块,在本端的性能事件RS-BBE(再生段背景误码块)显示B1检测出的误块数。

    收端B2检测出误块,在本端的性能事件MS-BBE(复用段背景误码块)显示B2检测出的误块数,同时在发端的性能事件MS-REI(复用段远端误块指示)中显示相应的误块数(MS-REI由M1字节传送)。

    注意:

    当接收端的误码超过了一定的限度,这时设备会上报一个误码越限的告警信号。

     

    • C2:信号标记字节

    C2用来指示VC帧的复接结构和信息净负荷的性质,例如通道是否已装载、所载业务种类和它们的映射方式。例如C2=00H表示这个VC4通道未装载信号,这时要往这个VC4通道的净负荷TUG3中插全“1”码——TU-AIS,设备出现高阶通道未装载告警:HP-UNEQ。C2=02H,表示VC4所装载的净负荷是按TUG结构的复用路线复用来的,中国的2Mbit/s复用进VC4采用的是TUG结构,见附图。C2=15H表示VC4的负荷是FDDI(光纤分布式数据接口)格式的信号。在配置华为设备时,2M信号的复用,C2要选择TUG结构。

    • & 技术细节:

    J1和C2字节的设置一定要使收/发两端相一致——收发匹配,否则在收端设备会出现HP-TIM(高阶通道追踪字节失配)、HP-SLM(高阶通道信号标记字节失配)。此两种告警都会使设备向该VC4的下级结构TUG3插全“1”码——TU-AIS告警指示信号。

     

    • G1:通道状态字节

    G1用来将通道终端状态和性能情况回送给VC4通道源设备,从而允许在通道的任一端或通道中任一点对整个双向通道的状态和性能进行监视。这句话怎么理解呢?G1字节实际上传送对告信息,即由收端发往发端的信息,使发端能据此了解收端接收相应VC4通道信号的情况。

    b1—b4回传给发端由B3(BIP-8)检测出的VC4通道的误块数,也就是HP-REI。当收端收到AIS、误码超限、J1,C2失配时,由G1字节的第5比特回送发端一个HP-RDI(高阶通道远端劣化指示),使发端了解收端接收相应VC4的状态,以便及时发现、定位故障。G1字节的b6至b8暂时未使用。

    • F2、F3:使用者通路字节

    这两个字节提供通道单元间的公务通信(与净负荷有关)。

    • H4:TU位置指示字节

    H4指示有效负荷的复帧类别和净负荷的位置,例如作为TU-12复帧指示字节或ATM净负荷进入一个VC-4时的信元边界指示器。

    只有当PDH信号:2Mbit/s,复用进VC-4时,H4字节才有意义。因为前面讲过,2Mbit/s的信号装进C12时是以4个基帧组成一个复帧的形式装入的,那么在收端为正确定位分离出E1信号就必须知道当前的基帧是复帧中的第几个基帧。H4字节就是指示当前的TU-12(VC12或C12)是当前复帧的第几个基帧,起着位置指示的作用。H4字节的范围是00H—03H,若在收端收到的H4不在此范围内,则收端会产生一个TU-LOM(支路单元复帧丢失告警)。

    • K3:空闲字节

    留待将来应用,要求接收端忽略该字节的值。

    • N1:网络运营者字节

    用于特定的管理目的。

    2.低阶通道开销:LP-POH

    低阶通道开销这里指的是VC12中的通道开销,当然它监控的是VC12通道级别的传输性能,也就是监控2Mbit/s的PDH信号在STM-N帧中传输的情况。

    低阶通道开销放在VC12的什么位置上呢?图3-7显示了一个VC12的复帧结构,由4个VC12基帧组成,低阶POH就位于每个VC12基帧的第一个字节,一组低阶通道开销共有4个字节:V5、J2、N2、K4。

                                               

                                                                                               图3-7 低阶通道开销结构图

    V5:通道状态和信号标记字节

    V5是复帧的第一个字节,TU-PTR指示的是VC12复帧的起点在TU-12复帧中的具体位置,也就是TU-PTR指示的是V5字节在TU-12复帧中的具体位置。

    V5具有误码校测,信号标记和VC12通道状态表示等功能,从这看出V5字节具有高阶通道开销G1和C2两个字节的功能。V5字节的结构见图3-8所示。

    误码监测

    (BIP-2)

    远端误块指示

    (REI)

    远端故障指示

    (RFI)

    信号标记

    (Signal  Lable)

    远端接收失效指示

    (RDI)

    1

    2

    3

    4

    5

    6

    7

    8

    误码监测:

    传送比特间插奇偶校验码BIP-2:

    第一个比特的设置应使上一个VC-12复帧内所有字节的全部奇数比特的奇偶校验为偶数。第二比特的设置应使全部偶数比特的奇偶校验为偶数。

    远端误块指示

    (从前叫作FEBE):

    BIP-2检测到误码块就向VC12通道源发1,无误码则发0。

    远端故障指示

    有故障发1

    无故障发0

    信号标记:

    表示净负荷装载情况和映射方式。3比特共8个二进值:

    000  未装备VC通道

    001  已装备VC通道,但未

            规定有效负载

    010  异步浮动映射

    011  比特同步浮动

    100  字节同步浮动

    101  保留

    110  O.181测试信号

    111  VC-AIS

    远端接收失效指示(从前叫FERF):

    接收失效则发1,成功则发0。

     

                                                                                                图3-8 VC-12 POH(V5)的结构

    若收端通过BIP-2检测到误码块,在本端性能事件由LP-BBE(低阶通道背景误码块)中显示由BIP-2检测出的误块数,同时由V5的b3回送给发端LP-REI(低阶通道远端误块指示),这时可在发端的性能事件LP-REI中显示相应的误块数。V5的b8是VC12通道远端失效指示,当收端收到TU-12的AIS信号,或信号失效条件时,回送给发端一个LP-RDI(低阶通道远端劣化指示)。注:本课程中RDI称之为远端劣化指示或远端失效指示。

    当劣化(失效)条件持续期超过了传输系统保护机制设定的门限时,劣化转变为故障,这时发端通过V5的b4回送给发端—LP-RFI(低阶通道远端故障指示)告之发端接收端相应VC12通道的接收出现故障。

    b5—b7提供信号标记功能,只要收到的值不是0就表示VC12通道已装载,即VC12货包不是空的。若b5—b7为000,表示VC12为空包,这时收端设备出现LP-UNEQ(低阶通道未装款式)告警,注意此时下插全“0”码(不是全“1”码—AIS)。若收发两端V5的b5—b7不匹配,则接收端出现LP-SLM(低阶通道信号标记失配)告警。

    • J2:VC12通道踪迹字节

    J2的作用类似于J0、J1,它被用来重复发送内容由收发两端商定的低阶通道接入点标识符,使接收端能据此确认与发送端在此通道上处于持续连接状态。

    • N2:网络运营者字节

    用于特定的管理目的。

    • K4:备用字节

    留待将来应用。

    想一想:

    这部分你学了些什么?

    这部分主要讲述了对STM-N信号OAM功能层层细化的实现方式——再生段开销、复用段开销、高阶通道开销、低阶通道开销。通过这些开销字节,你可以对STM-N信号的整体以及装载在STM-N帧中的低速信号进行全方位的监控。

    3.2 指针

    指针的作用就是定位,通过定位使收端能正确地从STM-N中拆离出相应的VC,进而通过拆VC、C的包封分离出PDH低速信号,也就是说实现从STM-N信号中直接下低速支路信号的功能。

    何谓定位?定位是一种将帧偏移信息收进支路单元或管理单元的过程,即以附加于VC上的指针(或管理单元指针)指示和确定低阶VC帧的起点在TU净负荷中(或高阶VC帧的起点在AU净负荷中)的位置。在发生相对帧相位偏差使VC帧起点“浮动”时,指针值亦随之调整,从而始终保证指针值准确指示VC帧起点位置的过程。对VC4,AU-PTR指的是J1字节的位置;对于VC12,TU-PTR指的是V5字节的位置。

    TU或AU指针可以为VC在TU或AU帧内的定位提供了一种灵活、动态的方法。因为TU或AU指针不仅能够容纳VC和SDH在相位上的差别,而且能够容纳帧速率上的差别。

    指针有两种AU-PTR和TU-PTR,分别进行高阶VC(这里指VC4)和低阶VC(这里指VC12)在AU-4和TU-12中的定位。下面分别讲述其工作机理。

    3.2.1 管理单元指针(AU-PTR)

    AU-PTR的位置在STM-1帧的第4行1—9列共9个字节,用以指示VC4的首字节J1在AU-4净负荷的具体位置,以便收端能据此正确分离VC4,如图3-9所示。

                                                         

                                                                                                                                   图3-9 AU-4指针在STM帧中的位置

    从图中可看到AU-PTR由H1YYH2FFH3H3H3九个字节组成,Y=1001SS11,S比特未规定具体的值,F=11111111。指针的值放在H1、H2两字节的后10个bit中,3个字节为一个调整单位——一个货物单位。

    调整单位起什么作用?以货车运货为例,将货物——VC4连续不停的装入这辆货车的车箱——信息净负荷区,当然装载时是以一个字节一个字节来装载的,这辆货车的停站时间是125μs。

    (1)当VC4的速率(帧频)高于AU-4的速率(帧频)时,也就是AU-4的包封速率要低于VC4的装载速率时,相当于装载一个VC4的货物所用的时间少于125μs(货车停站时间),由于货车还未开走,VC4的装载还要不停的进行,这时AU-4这辆货车的车箱(信息净负荷区)已经装满了,无法再装下不断装入的货物。此时将3个H3字节(一个调整单位)的位置用来存放货物;这3个H3字节就象货车临时加挂的一个备份存放空间。那么,这时货物以3个字节为一个单位将位置都向前串一位,以便在AU-4中加入更多的货物(一个VC4+3个字节),这时每个货物单位的位置(3个字节为一个单位)都发生了变化。这种调整方式叫做负调整,紧跟着FF两字节的3个H3字节所占的位置叫做负调整位置。此时3个H3字节的位置上放的是VC4的有效信息,这种调整方式也就是将应装于下一辆货车的VC4的头三个字节装于本车上了。

    (2)当VC4的速率低于AU-4速率时,相当于在AU-4货车停站时间内一个VC4无法装完,这时就要把这个VC4中最后的那个3字节——货物单位,留待下辆车运输。这时出于AU-4未装满VC4(少一个3字节单位),于是车箱中空出一个3字节单位。为防止由于车箱未塞满而在传输中引起货物散乱,那么这时要在AU-PTR 3个H3字节后面再插入3个H3字节,此时H3字节中填充伪随机信息(相当于在车厢空间塞入的添充物),这时VC4中的3字节货物单位都要向后串一个单位(3字节),于是这些货物单位的位置也会发生相应的变化。这种调整方式叫做正调整,相应的插入3个H3字节的位置叫做正调整位置。当VC4的速率比AU-4慢很多时,要在AU-4净负荷区加入不止一个正调整单位(3个H3)。注意,负调整位置只有一个(3个H3字节),负调整位置在AU-PTR上,正调整位置在AU-4净负荷区。

    (3)不管是正调整和负调整都会使VC4在AU-4的净负荷中的位置发生了改变,也就是说VC4第一个字节在AU-4净负荷中的位置发生了改变。这时AU-PTR也会作出相应的正、负调整。为了便于定位VC4中的各字节(实际上是各货物单位)在AU-4净负荷中的位置,给每个货物单位赋予一个位置值,如图3-10所示。位置值是将紧跟H3字节的那个3字节单位设为0位置,然后依次后推。这样一个AU-4净负荷区就有261×9/3=783个位置,而AU-PTR指的就是J1字节所在AU-4净负荷的某一个位置的值。显然,AU-PTR的范围是0~782,否则为无效指针值,当收端连续8帧收到无效指针值时,设备产生AU-LOP告警(AU指针丢失),并往下插AIS告警信号。

    (4)正/负调整是按一次一个单位进行调整的,那指针值也就随着正调整或负调整进行+1(指针正调整)或-1(指针负调整)操作。

    (5)在VC4与AU-4无频差和相差时,也就是货车停站时间和装载VC4的速度相匹配时,AU-PTR的值是522,如图3-9所中箭头所指处。

    注意:

    AU-PTR所指的是下一帧VC4的J1字节的位置。在网同步情况下指针调整并不经常出现,因而H3字节大部分时间填充的是伪信息。

    我们讲过指针的值是放在H1H2字节的后10个比特,那么10个bit的取值范围是0~1023(210),当AU-PTR的值不在0~782内时,为无效指针值。H1H2的16个比特是如何实现指针调整控制的呢?见图3-10所示。

    N

    N

    N

    N

    S

    S

    I

    D

    I

    D

    I

    D

    I

    D

    I

    D

    新数据标帜(NDF)

    表示所载净负荷容量有变化。

    净负荷无变化时,NNNN为正常值“0110”。

    在净负荷有变化的那一帧,NNNN反转为“1001”,此即NDF。NDF出现的那一帧指针值随之改变为指示VC新位置的新值称为新数据。若净负荷不再变化,下一帧NDF又返回到正常值“0110”并至少在3帧内不作指针值增减操作。

     

    AU/TU类别

    对于AU-4 和TU-3 SS=10

    10比特指针值

    AU-4指针值为0~782;三字节为一偏移单位。

    指针值指示了VC4帧的首字节J1与AU-4指针中最后一个H3 字节间的偏移量。

    指针调整规则

    (1)在正常工作时,指针值确定了VC-4在AU-4 帧内的起始位置。NDF设置为“0110”;

    (2)若VC4帧速率比AU-4帧速率低,5个I比特反转表示要作正帧频调整,该VC帧的起始点后移一个单位,下帧中的指针值是先前指针值加1;

    (3)若VC4帧速率比AU-4帧速率高,5个D比特反转表示要作负帧频调整,负调整位置H3用VC4的实际信息数据重写,该VC 帧的起始点前移一个单位,下帧中的指针值是先前指针值减1;

    (4)当NDF出现更新值1001,表示净负荷容量有变,指针值也要作相应地增减,然后NDF回归正常值0110;

    (5)指针值完成一次调整后,至少停3帧方可有新的调整;

    (6)收端对指针解码时,除仅对连续3次以上收到的前后一致的指针进行解读外,将忽略任何指针的变化。

                                                 图3-10 AU-4中H1和H2构成的16bit指针码字

    指针值由H1、H2的第七至第十六比特表示,这10个bit中奇数比特记为I比特,偶数比特记为D比特。以5个I比特和5个D比特中的全部或大多数发生反转来分别表示指针值将进行加1或减1操作,因此I比特又叫做增加比特,D比特叫做减少比特。

    指针的调整是要停三帧才能再进行,也就是说若从指针反转的那一帧算起(作为第一帧),至少在第五帧才能进行指针反转(其下一帧的指针值将进行加1或减1操作)。

    NDF反转表示AU-4净负荷有变化,此时指针值会出现跃变,即指针增减的步长不为1。若收端连续8帧收到NDF反转,则此时设备出现AU-LOP告警。

    接收端只对连续3个以上收到的前后一致的指针进行解读,也就是说系统自认为指针调整后的3帧指针值一致,若此时指针值连续调整,在收端将出现VC4的定位错误,导致传输性能劣化。

    概括地说发端5个I或5个D比特数反转,在下一帧AU-PTR的值+1或-1;收端根据所收帧的大多数I或D比特的反转情况决定是否对下一帧去调整,也就是定位VC4首字节并恢复信号指针适配前的定时。

    3.2.2 支路单元指针(TU-PTR)

    TU指针用以指示VC12的首字节V5在TU-12净负荷中的具体位置,以便收端能正确分离出VC12。TU-12指针为VC12在TU-12复帧内的定位提供了灵活动态的方法。TU-PTR的位置位于TU-12复帧的V1、V2、V3、V4处。如图3-11所示。

    70

    71

    72

    73

    105

    106

    107

    108

    0

    1

    2

    3

    35

    36

    37

    38

    74

    75

    76

    77

    109

    110

    111

    112

    4

    5

    6

    7

    39

    40

    41

    42

    78

    第一个C-12 基    帧结构   9×4-2 32W

    2Y

    81

    113

    第二个C-12  基    帧结构   9×4-2 32W

    1Y 1G

    116

    8

    第三个C-12基   帧结构 9×4-2 32W

    1Y 1G

    11

    43

    第四个C-12基    帧结构  9×4-1 31W 1Y

    1M+1N

    46

    82

     

     

    85

    117

     

     

    120

    12

     

     

    15

    47

     

     

    50

    86

     

     

    89

    121

     

     

    124

    16

     

     

    19

    51

     

     

    54

    90

     

     

    93

    125

     

     

    128

    20

     

     

    23

    55

     

     

    58

    94

     

     

    97

    129

     

     

    132

    24

     

     

    27

    59

     

     

    62

    98

     

     

    101

    133

     

     

    136

    28

     

     

    31

    63

     

     

    66

    102

    103

    104

    V1

    137

    138

    139

    V2

    32

    33

    34

    V3

    67

    68

    69

    V4

                                                                                                       图3-11 TU-12指针位置和偏移编号

    TU-12 PTR由V1、V2、V3和V4四个字节组成。

    在TU-12净负荷中,从紧邻V2的字节起,以1个字节为一个正调整单位,依次按其相对于最后一个V2的偏移量给予偏移编号,例如“0”、“1”等。总共有0~139个偏移编号。VC-12帧的首字节V5字节位于某一偏移编号位置,该编号对应的二进制值即为TU-12指针值。

    TU-12 PTR中的V3字节为负调整单位位置,其后的那个字节为正调整字节,V4为保留字节。指针值在V1、V2字节的后10个比特,V1、V2字节的16个bit的功能与AU-PTR的H1H2字节的16个比特功能相同。

    注意:

        位置的正/负调整是由V3来进行的。

     

    TU-PTR的调整单位为1,可知指针值的范围为0~139,若连续8帧收到无效指针或NDF,则收端出现TU-LOP(支路单元指针丢失)告警,并下插AIS告警信号。

    在VC12和TU-12无频差、相差时,V5字节的位置值是70,也就是说此时的TU-PTR的值为70。

    TU-PTR的指针调整和指针解读方式类似于AU-PTR。

    想一想:

    这部分你学了些什么? 

    1. AU-PTR和TU-PTR是如何对VC4和VC12定位的。
    2. 跟指针有关的告警、性能事件的产生原因。

    其中2.要重点掌握。

    小结

    本节主要讲述了SDH体制信号监控的实现,由RSOH、MSOH、HP-POH、LP-POH实现层层细化监控机制;指针定位机理。

    需重点掌握的是字节对告警和性能的检测机理。

    习题

    1. MS-AIS、MS-RDI是由什么字节检测的?
    2. ROLF告警的检测机理是什么?
    3. 当收端检测出AU-PTR为800或1023时,分别会有什么告警?
    4. 哪几个字节完成了层层细化的误码监控?

     

    展开全文
  • 详解OSPF开销值的使用

    2021-11-10 21:42:11
    OSPF开销值、协议优先级及计时器的修改 1:原理概述: 由于路由器上可能同时运行多种动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置了不同的默认优先级,当在不同...

    OSPF开销值、协议优先级及计时器的修改

    1:原理概述:

           由于路由器上可能同时运行多种动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置了不同的默认优先级,当在不同协议中发现同一条路由时,协议优先级高的将被优选;

           如果没有直接配置OSPF接口的开销值,OSPF会根据该接口的带宽自动计算其开销值,计算公式为:接口开销=带宽参考值/接口带宽;取计算结果的整数部分作为接口开销值(当结果小于1时取1)。通过改变带宽参考值可以间接改变接口的开销值。

           OSPF常见的计时器包括Hello timer 和 Dead timer,分别决定了OSPF发送Hello报文的间隔和保持邻居关系的计时器、默认情况下,P2P、Broadcast 类型接口发送Hello报文的时间间隔为10s,邻居失效时间为40s,P2MP、NBMA类型接口发送Hello报文的时间间隔为30s,邻居失效时间为120s;

    实验目的:

    掌握配置OSPF协议优先级的方法

    掌握配置OSPF开销值的方法

    掌握配置OSPF Hello timer的方法

    掌握配置OSPF Dead timer的方法

     

    我们首先做好基础配置,使网络互通,在AR1、AR2、AR4、AR5上配置OSPF;通告网段属于区域0;

    AR1:
    
    #
    
    interface Serial2/0/0
    
     link-protocol ppp
    
     ip address 10.0.12.254 255.255.255.0
    
    #
    
    interface Serial2/0/1
    
     link-protocol ppp
    
    #
    
    interface GigabitEthernet0/0/0
    
     ip address 10.0.1.254 255.255.255.0
    
    #
    
    interface GigabitEthernet0/0/1
    
     ip address 10.0.13.1 255.255.255.0
    
    #
    
    interface NULL0
    
    #
    
    ospf 1
    
     area 0.0.0.0
    
      network 10.0.1.0 0.0.0.255
    
      network 10.0.12.0 0.0.0.255
    
    AR2:
    
    #
    
    interface Serial2/0/0
    
     link-protocol ppp
    
     ip address 10.0.12.1 255.255.255.0
    
    #
    
    interface Serial2/0/1
    
     link-protocol ppp
    
     ip address 10.0.24.1 255.255.255.0
    
    #
    
    interface GigabitEthernet0/0/0
    
    #
    
    interface GigabitEthernet0/0/1
    
    #
    
    interface NULL0
    
    #
    
    ospf 1
    
     area 0.0.0.0
    
      network 10.0.12.0 0.0.0.255
    
      network 10.0.24.0 0.0.0.255
    
    AR4:
    
    #
    
    interface Serial2/0/0
    
     link-protocol ppp
    
     ip address 10.0.24.254 255.255.255.0
    
    #
    
    interface Serial2/0/1
    
     link-protocol ppp
    
    #
    
    interface GigabitEthernet0/0/0
    
     ip address 10.0.45.1 255.255.255.0
    
    #
    
    interface GigabitEthernet0/0/1
    
    #
    
    interface NULL0
    
    #
    
    ospf 1
    
     area 0.0.0.0
    
      network 10.0.24.0 0.0.0.255
    
      network 10.0.45.0 0.0.0.255
    
    AR5:
    
    #
    
    interface GigabitEthernet0/0/0
    
     ip address 10.0.2.254 255.255.255.0
    
    #
    
    interface GigabitEthernet0/0/1
    
     ip address 10.0.45.254 255.255.255.0
    
    #
    
    interface NULL0
    
    #
    
    ospf 1
    
     area 0.0.0.0
    
      network 10.0.2.0 0.0.0.255
    
      network 10.0.45.0 0.0.0.255

    这些都配置完成后,我们查看可否ping通;

     

    我们开始实施网络升级方案,部署使用经过AR3的线路,运行RIP协议。

    AR1:
    
    #
    
    rip 1
    
     undo summary
    
     version 2
    
     network 10.0.0.0
    
    AR3:
    
    #
    
    rip 1
    
     undo summary
    
     version 2
    
     network 10.0.0.0
    
    AR4:
    
    #
    
    rip 1
    
     undo summary
    
     version 2
    
     network 10.0.0.0
    
    AR5:
    
    #
    
    rip 1
    
     undo summary
    
     version 2
    
     network 10.0.0.0

    配置完成后,在AR1上检查路由条目:

     

    我们tracert PC2发现:

     

    依旧是通过OSPF协议获得,即PC1与PC2之间的数据依然通过AR2转发,新接入的AR3,带宽更大的路径没有参加数据转发,升级不成功。

    导致不成功的原因是该路由条目可以同时从OSPF协议和RIP协议获得,当同一路由条目可以通过不同的路由协议获得时,首先比较两协议的优先级,路由器将优选优先级高的路由协议。OSPF的默认协议优先级为10,而RIP为100,优先级值越低表示优先级越高,故而选择了从OSPF协议获得的路由条目。

    但是根据实际需求,经过AR2使用的OSPF线路是广域网线路,带宽很低,而经过AR3使用的RIP线路是以太网线路,带宽高,所以现在一定要选择RIP条目进行转发,通过修改OSPF协议优先级即可。

    在AR1、AR4、AR5的进程下修改OSPF协议优先级的值为110,大于RIP的100。

    AR1:

    [Huawei-ospf-1]preference 110

    其他两台同理;

    配置完成后,查看路由条目:

     

     

    配置OSPF开销值:

    AR3:
    
    Ospf 1
    
    Area 0
    
    Network 10.0.13.0 0.0.0.255
    
    Network 10.0.34.0 0.0.0.255

    其他俩台路由器同理;

     

    可以观察到现在使用的是AR3的线路;

    下面我们开始配置OSPF开销值:

    由于网络中运行不同路由协议将会导致管理不便,现需更改AR3的配置,使其运行OSPF协议。

    在网络调整过程中最重要的是就是尽量确保能够使其用户通信所造成的影响程度降至最小;

    配置完成后,在分支左区域的网关AR1上查看路由表关于分支右区域网段的10.0.2.0的条目;

     

    在AR1上G0/0/1接口上运行OSPF协议所需的开销值;

    配置OSPF计时器:

    配置完成后,查看AR1的邻居状态;

    可以观察到,数据恢复正常;实验结束;

    备注:如有错误,请谅解!

    此文章为本人学习笔记,仅供参考!如有重复!!!请联系本人!

    展开全文
  • 前文中中咱们用试验的形式验证了Linux过程和线程的上下文切换开销,大概是3-5us之间。当运行在个别的计算机程序时,这个开销的确不算大。然而海量互联网服务端和个别的计算机程序相比,特点是:高并发:每秒钟须要...

    前文中中咱们用试验的形式验证了Linux过程和线程的上下文切换开销,大概是3-5us之间。当运行在个别的计算机程序时,这个开销的确不算大。然而海量互联网服务端和个别的计算机程序相比,特点是:

    高并发:每秒钟须要解决成千上万的用户申请

    周期短:每个用户解决耗时越短越好,常常是ms级别的

    高网络IO:常常须要从其它机器上进行网络IO、如Redis、Mysql等等

    低计算:个别CPU密集型的计算操作并不多

    即便3-5us的开销,如果上下文切换量特地大的话,也依然会显得是有那么一些性能低下。例如之前的Web Server之Apache,就是这种模型下的软件产品。(其实过后Linux操作系统在设计的时候,指标是一个通用的操作系统,并不是专门针对服务端高并发来设计的)

    为了防止频繁的上下文切换,还有一种异步非阻塞的开发模型。那就是用一个过程或线程去接管一大堆用户的申请,而后通过IO多路复用的形式来进步性能(过程或线程不阻塞,省去了上下文切换的开销)。Nginx和Node Js就是这种模型的典型代表产品。平心而论,从程序运行效率上来,这种模型最为机器敌对,运行效率是最高的(比上面提到的协程开发模型要好)。所以Nginx曾经取代了Apache成为了Web Server里的首选。然而这种编程模型的问题在于开发不敌对,说白了就是过于机器化,离过程概念被形象进去的初衷南辕北辙。人类失常的线性思维被打乱,应用层开发们被逼得以非人类的思维去编写代码,代码调试也变得异样艰难。

    于是就有一些聪慧的脑袋们持续在应用层又动起了主见,设计出了不须要过程/线程上下文切换的“线程”,协程。用协程去解决高并发的利用场景,既可能合乎过程波及的初衷,让开发者们用人类失常的线性的思维去解决本人的业务,也同样可能省去低廉的过程/线程上下文切换的开销。因而能够说,协程就是Linux解决海量申请利用场景里的过程模型的一个很好的的补丁。

    背景介绍完了,那么我想说的是,毕竟协程的封装尽管轻量,然而毕竟还是须要引入了一些额定的代价的。那么咱们来看看这些额定的代价具体多小吧。

    协程开销测试

    1、协程切换CPU开销

    测试代码如下,测试过程是一直在协程之间让出CPU。外围代码如下:

    func cal() {

    for i :=0 ; i<1000000 ;i++{

    runtime.Gosched()

    }

    }

    func main() {

    runtime.GOMAXPROCS(1)

    currentTime:=time.Now()

    fmt.Println(currentTime)

    go cal()

    for i :=0 ; i<1000000 ;i++{

    runtime.Gosched()

    }

    currentTime=time.Now()

    fmt.Println(currentTime)

    }

    好了,让咱们编译运行一下:

    # cd tests/test05/src/main/;

    # go build

    # ./main

    2019-08-08 22:35:13.415197171 +0800 CST m=+0.000286059

    2019-08-08 22:35:13.655035993 +0800 CST m=+0.240124923

    均匀每次协程切换的开销是(655035993-415197171)/2000000=120ns。绝对于后面文章测得的过程切换开销大概3.5us,大概是其的三十分之一。比零碎调用的造成的开销还要低。

    2、协程内存开销

    在空间上,协程初始化创立的时候为其调配的栈有2KB。而线程栈要比这个数字大的多,能够通过ulimit 命令查看,个别都在几兆,作者的机器上是10M。如果对每个用户创立一个协程去解决,100万并发用户申请只须要2G内存就够了,而如果用线程模型则须要10T。

    # ulimit -a

    stack size (kbytes, -s) 10240

    本节论断

    协程因为是在用户态来实现上下文切换的,所以切换耗时只有区区100ns多一些,比过程切换要高30倍。单个协程须要的栈内存也足够小,只须要2KB。所以,近几年来协程大火,在互联网后端的高并发场景里大放荣耀。

    无论是空间还是工夫性能都比过程(线程)好这么多,那么Linus为啥不把它在操作系统里实现了多好?

    实际上协程并不是一个新玩意,在上个世纪60年代的时候就曾经有人提出了。操作系统的一个次要设计指标是实时性,对优先级比拟高的过程是会抢占以后占用CPU的过程。然而协程无奈实现这一点,还得依赖于应用CPU的一方被动开释,与操作系统的实现目标不相吻合。协程的高效是以就义了可抢占性为代价的。

    扩大:因为go的协程调用起来太不便了,所以一些go的程序员就很随便地go来go去。要晓得go这条指令在切换到协程之前,得先把协程创立进去。而一次创立加上调度开销就涨到400ns,差不多相当于一次零碎调用的耗时了。尽管协程很高效,然而也不要乱用,否则go祖师爷Rob Pike花大精力优化进去的性能,被你随便一go又给葬送掉了。

    开发内功修炼之CPU篇专辑:

    1.你认为你的多核CPU都是真核吗?多核“假象”

    2.据说你只知内存,而不知缓存?CPU示意很伤心!

    3.TLB缓存是个神马鬼,如何查看TLB miss?

    4.过程/线程切换到底须要多少开销?

    5.协程到底比线程牛在什么中央?

    6.软中断会吃掉你多少CPU?

    7.一次零碎调用开销到底有多大?

    8.一次简略的php申请redis会有哪些开销?

    9.函数调用太多了会有性能问题吗?

    我的公众号是「开发内功修炼」,在这里我不是单纯介绍技术实践,也不只介绍实践经验。而是把实践与实际联合起来,用实际加深对实践的了解、用实践进步你的技术实际能力。欢送你来关注我的公众号,也请分享给你的好友~~~

    展开全文
  • 多线程的线程开销

    2021-03-06 05:27:49
    多线程中两个必要的开销:线程的创建、上下文切换创建线程:创建线程使用是直接向系统申请资源的,对操作系统来说,创建一个线程的代价是十分昂贵的, 需要给它分配内存、列入调度,同时在线程切换的时候还要执行内存...

    多线程中两个必要的开销:线程的创建、上下文切换

    创建线程:

    创建线程使用是直接向系统申请资源的,对操作系统来说,创建一个线程的代价是十分昂贵的, 需要给它分配内存、列入调度,同时在线程切换的时候还要执行内存换页,CPU 的缓存被 清空,切换回来的时候还要重新从内存中读取信息,破坏了数据的局部性。

    关于资源:Java线程的线程栈所占用的内存是在Java堆外的,所以是不受java程序控制的,只受系统资源限制,默认一个线程的线程栈大小是1M(当然这个可以通过设置-Xss属性设置,但是要注意栈溢出问题),但是,如果每个用户请求都新建线程的话,1024个用户光线程就占用了1个G的内存,如果系统比较大的话,一下子系统资源就不够用了,最后程序就崩溃了。

    同样的道理在java程序中也不要随意开启新的线程,特别是高频业务尽量使用线程池,不然很容易导致内存不足,程序崩溃的问题。

    上下文切换:

    概念:

    当前任务执行一个时间片后会切换到下一个任务。在切换之前,上一个任务的状态会被保存下来,下次切换回这个任务时,可以再加载这个任务的状态,任务从保存到再加载的过程就是一次上下文切换。

    说明:

    1)时间片是CPU分配给各个线程的时间,时间片一般是几十毫秒。

    2)CPU通过给每个线程分配CPU时间片,并且不停地切换线程来实现多线程。因为时间片非常短,所以感觉多个线程是在同时执行。

    减少上下文切换的方法:

    1)无锁并发编程:

    多线程竞争锁时,会引起上下文切换,所以在使用多线程处理数据时,可以采用一些策略来避免使用锁。

    常见的策略:将数据按照id的哈希值进行切分,不同的线程处理不同段的数据。

    2)锁分离技术:

    举例:ConcurrentHashMap

    3)CAS算法

    java的Atomic包使用CAS算法来更新数据,而不需要加锁。

    4)使用最少的线程

    避免创建不需要的线程,比如任务很少,但是创建了很多线程来处理,这样会造成大量线程都处于等待状态。

    举例:

    通过减少大量WAITING的线程,来减少上下文切换次数

    # 转储堆栈信息

    jstack PID > dumpfile

    # 统计所有线程的状态

    grep java.lang.Thread.State dumpfile | awk '{print $2" "$3" "$4" "$5}' | sort | uniq -c

    如果存在大量waiting的线程,则查看dumpfile文件进行分析:

    1)如果是服务器的工作线程大量等待,则修改服务器配置文件中线程池的配置信息,然后重启查看效果。

    展开全文
  • 进程上下文切换开销

    2021-03-03 23:51:27
    进程是我们开发同学非常熟悉的概念,我们可能也听说过进程上下文切换开销。那么今天让我们来思考一个问题,究竟一次进程上下文切换会吃掉多少CPU时间呢?线程据说比进程轻量,它的上下文切换会比进程切换节约很多CPU...
  • 本文主要内容是IS-IS路由开销类型。 阅读本文,您需要有一定的IS-IS基础,如果您对此存在困惑,欢迎查阅我博客的其他内容,相信您一定会有所收获。 推荐阅读: IS-IS详解(一)——IS-IS基础 IS-IS详解(二)——IS-...
  • 初学C语言的时候,我们有时会听说函数调用会有一定的开销,在进行了进一步学习之后,我们来看看原来听说的开销指的什么。下面是两个非常简单的样例,就不作解释了:函数调用版本C程序:#include int sum(int a, int ...
  • 那么通过这节课的学习,你现在可以来回答本节关联的面试题目:进程的开销比线程大在了哪里? 【解析】 Linux 中创建一个进程自然会创建一个线程,也就是主线程。创建进程需要为进程划分出一块完整的内存空间,有...
  • Lua和C#交互开销探究

    2021-11-11 21:01:56
    Lua和C#交互开销探究 前言 最近又看了一下ToLua相关的东西,终于稍微看明白了一点点,在此作下笔记。 过程 Lua每个用到的C# object都会分配一个ID与之对应,ObjectTranslator类起到关键作用。 ObjectTranslator译...
  • (3)当我们执行查询的时候,MySQL会自动生成一个执行计划,也就是query plan,而且通常有很多种不同的实现方式,它会选择最低的那一个,而这个cost值就是开销最低的那一个。 (4)它对于比较我们的开销是非常有用的,...
  • 在启动一个新线程的时候会有一定时间的额外开销,因此并不是所有情况下都应使用多线程。如下的代码段进行简单实验探讨://TimeCostToStartNewThread.javapublic class TimeCostToStartNewThread{public static void ...
  • Java中的时间测量开销

    2021-03-16 17:50:45
    但是总的来说应该是它们在开销方面基本上是等价的。 UPDATE 2015/08/25:虽然这个答案更接近正确,最多,使用JMH来衡量,它仍然不正确。测量类似System.nanoTime()本身是一种特殊的扭曲基准。答案和最后文章是here。
  • Docker IO开销评测

    2021-04-19 04:49:17
    这篇文章是系列文章中的一篇,对Docker中的IO开销进行了评测。本文又是关于用Docker镜像使用Percona Server的文章。在我的前一篇文章“Percona服务器Docker CPU/网络开销评测”里介绍了Docker中CPU和网络的开销,...
  • 为什么线程切换开销

    千次阅读 2020-12-22 17:01:49
    线程切换的开销 我们都知道,线程切换会带来开销,如果频繁进行线程切换,所造成的开销是相当可观的。那么为什么线程切换会有开销呢,有哪些开销呢?这里涉及几个概念:CPU上下文切换、线程上下文切换、特权模式...
  • 该功能不做任何花哨的事情 def taxicab_distance(u, v): return np.abs(u[0] - v[0]) + np.abs(u[1] - v[1]) 我知道python具有相当高的函数调用开销,我认为这会影响性能. {numpy.core.multiarray.array}可以忽略,我...
  • 中兴二层交换机STP根路径开销的计算 一、实验目的   1、验证STP环境中与计算RP、DP、阻塞端口相关的路径开销值的作用。 二、实验内容   1、完成中兴二层交换机STP中端口路径开销值的修改和验证不同的根路径开销...
  • OpenJudge 月度开销

    2021-06-18 21:52:17
    月度开销详解:35ms 1544kB 总时间限制:1000ms 内存限制:65536kB
  • 开销目标 首选确认能给你带来幸福感的开销目标。共10 个分类,分别是: 便捷,买时间,比如外卖、家政 旅行 健康、健美 体验,比如美食、音乐会 自由,投资买未来 亲情、关系 ...
  • 计算公式为:接口开销=带宽参考值/接口带宽,取计算结果的整数部分作为接口的开销值,通过改变带宽参考值可以间接改变接口的开销值。 OSPF常见的计时器澳阔hello timer 和dead timer,分别决定了ospf发送hello报文的
  • 本文主要内容是IS-IS路由开销计算与外部路由引入。 阅读本文,您需要有一定的IS-IS基础,如果您对此存在困惑,欢迎查阅我博客的其他内容,相信您一定会有所收获。 推荐阅读: IS-IS详解(一)——IS-IS基础 IS-IS...
  • 由于研究需要,我们计算了SHA-256和AES-256的计算时间开销,下面将代码贴在下方。 需要注意的是,我们使用System.nanoTime()方法,获取的时间戳的单位是纳秒。此外,我们循环计算了1000次求其平均值,由于第一次的...
  • 数据库开发小知识普及六--索引的各种开销 1.回表开销 大家都知道索引存储索引列的值和rowid,通过rowid来定位回到表中获取其他字段值。其实这个回表动作的开销也很大。结论:索引查询要尽可能避免回表,如果不可...
  • NOI 06:月度开销

    2021-05-07 20:58:37
    描述 农夫约翰是一个精明的会计师。...约翰的目标是合理安排每个fajo月包含的天数,使得开销最多的fajo月的开销尽可能少。 输入 第一行包含两个整数N,M,用单个空格隔开。 接下来N行,每行包含一个1到10
  • Java对象开销的认识

    2021-03-24 09:39:36
    这是第一遇到对象开销的概念,以前对这个基本没有概念。 关于对象开销,如上图的概念那样。对象开销与JVM相关,我大胆猜测一下,jvm的性能提升,其中有一些优化就是对于对象开销的优化。 ...
  • 有2种类型的转换:隐式转换,当您将类型从类型转换为更宽泛的类型时,它是自动完成的,并且没有开销:String s = "Cast";Object o = s; // implicit casting从较宽的类型转换为较窄的类型时,显式转换。对于这种情况...
  • 调度功能必须设计成可以满足多个目标, 包括公平、任何进程都不会产生饥饿、有效的使用处理器时间以及较低的开销, 此外, 调度中还需要考量优先级和实时期限方面. 从根本上说, 调度是属于队列管理, 用来在排队环境中...
  • 怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式:第一种:用 top 命令 中的cpu 信息观察Top可以看到的cpu信息有:复制代码代码如下:Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 ...
  • 普通人家,两个大人都上班,上班一族,简单记录下,一个月的开销吧。 1、房贷13000 2、房租4500 3、孩子幼儿园5000 4、每个月各种日常生活物品购买6000 5、交通开支3000 6、每个季节购买新衣服还有化妆品平均一个月...
  • 2021-02-26:一个数组arr是二叉树的中序遍历结果,每条边的开销是父节点和子节点的乘积,总开销是所有边的开销之和。请问最小总开销是多少? 链接:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 817,655
精华内容 327,062
关键字:

开销

友情链接: LA1.rar