CN111698275A - 数据处理方法、装置及设备 - Google Patents
数据处理方法、装置及设备 Download PDFInfo
- Publication number
- CN111698275A CN111698275A CN201910200163.7A CN201910200163A CN111698275A CN 111698275 A CN111698275 A CN 111698275A CN 201910200163 A CN201910200163 A CN 201910200163A CN 111698275 A CN111698275 A CN 111698275A
- Authority
- CN
- China
- Prior art keywords
- data
- application
- socket connection
- operating system
- socket
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请提供一种数据处理方法、装置及设备。该方法包括:设备的操作系统接收设备中的应用发送的包括有套接字连接的标识启动指令,应用为非时延敏感型应用。操作系统根据启动指令,调用操作系统中的监听模块监听内核缓冲区缓存套接字连接的数据的情况,套接字连接的数据来自底层协议栈。在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,监听模块生成数据可读标识,其中,起始时刻为操作系统接收到启动指令的时刻,数据可读标识指示内核缓冲区中接收的套接字连接的数据为应用可读。从而利用时间限制,优化数据的缓存过程,使得应用从操作系统接收数据的过程更加适用于实际需求,减少了系统调用的次数。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据处理方法、装置及设备。
背景技术
移动上网已经成为设备(如终端)的主要特性,设备接入网络所使用的技术方案也不断发展,极大地丰富了设备产品的信息获取速率,移动通信领域常用的TCP(transmission control protocol传输控制)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
通常,系统调用(system call)是一系列复杂操作的组合,会触发设备中中央处理器(central processing unit,CPU)的使用,甚至执行设备中的内存拷贝等操作。目前,在设备使用TCP接入网络的过程中,处于用户态的应用程序通过多次系统调用接收来自处于内核态的TCP协议栈的数据。例如,应用程序可以调用select()函数监视套接字socket连接的状态,再调用read()函数读取数据等。然而,过于频繁的系统调用容易导致CPU的资源浪费,增加设备的功耗。
发明内容
本申请提供一种数据处理方法、装置及设备,可以利用时间限制,优化数据的缓存过程,使得应用从操作系统获取数据的过程更加适用于实际需求,减少了系统调用的次数。
第一方面,本申请提供一种数据处理方法,包括:
设备的操作系统接收所述设备中的应用发送的启动指令,所述应用为非时延敏感型应用,所述启动指令包括:套接字连接的标识;
所述操作系统根据所述启动指令,调用监听模块监听内核缓冲区缓存所述套接字连接的数据的情况,所述套接字连接的数据来自底层协议栈;
在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,所述监听模块生成数据可读标识;
其中,所述起始时刻为所述操作系统接收到所述启动指令的时刻,所述数据可读标识指示所述内核缓冲区中接收的所述套接字连接的数据为所述应用可读。
本申请涉及的设备可以为网络设备,也可以终端设备,本申请对此不做限定。
网络设备:可以是基站,或者接入点,或者接入网设备,或者可以是指接入网中在空中接口上通过一个或多个扇区与无线终端通信的设备。网络设备可用于将收到的空中帧与IP分组进行相互转换,作为无线终端与接入网的其余部分之间的路由器,其中接入网的其余部分可包括网际协议(IP)网络。网络设备还可协调对空中接口的属性管理。例如,网络设备可以是全球移动通讯(Global System of Mobile communication,GSM)或码分多址(Code Division Multiple Access,CDMA)中的基站(Base Transceiver Station,BTS),也可以是宽带码分多址(Wideband Code Division Multiple Access,WCDMA)中的基站(NodeB,NB),还可以是长期演进(Long Term Evolution,LTE)中的演进型基站(Evolutional Node B,eNB或eNodeB),或者中继站或接入点,或者未来5G网络中的基站,例如gNB等,在此并不限定。
终端设备:可以是无线终端也可以是有线终端,无线终端可以是指向用户提供语音和/或其他业务数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。无线终端可以经RAN与一个或多个核心网进行通信,无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据。例如,个人通信业务(Personal Communication Service,PCS)电话、无绳电话、会话发起协议(Session Initiation Protocol,SIP)话机、无线本地环路(Wireless LocalLoop,WLL)站、个人数字助理(Personal Digital Assistant,PDA)等设备。无线终端也可以称为系统、订户单元(Subscriber Unit)、订户站(Subscriber Station),移动站(MobileStation)、移动台(Mobile)、远程站(Remote Station)、远程终端(Remote Terminal)、接入终端(Access Terminal)、用户终端(User Terminal)、用户代理(User Agent)、用户设备(User Device or User Equipment),在此不作限定。
该设备的软件包括操作系统(Operating System,OS)和运行于操作系统用户态中的应用。该操作系统可以包括但不限于Linux、Android及其他系统。其中设备的软件皆存储在设备的存储器中。
其中,操作系统可分为用户态和内核态。不同的协议,协议所处位置也略有不同。例如,传输控制协议(Transmission Control Protocol,TCP)、快速UDP网络连接(QuickUDP Internet Connection,QUIC)协议以及自定义协议等为用户态协议,TCP、用户数据报协议(User Datagram Protocol,UDP)、流控制传输协议(Stream Control TransmissionProtocol,STCP)等为内核态协议。
通常,应用是通过应用程序编程接口(Application Programming Interface,API)与内核操作系统进行信息交互的。该API可以是一套套接字(socket)的接口函数。这套接口函数中包括一个函数socket(),该socket()可以实现多种功能,也就是实现多个模块,如监听模块(即通过select()函数实现监听如TCP各种连接状态参数功能)、接收模块(即通过receive()函数实现接收功能)、发送模块(即通过send()函数实现发送功能)、写入模块(即通过write()函数实现写入功能)、读取模块(即通过read()函数实现读取功能)。其中,该API可以是用户自行开发的,也可以是在现有的API基础上改进得到的。当然,上述描述只是举例,实现一种功能可以有多种方式,例如可以通过多种函数实现,也可以在一种实现方式中使用多个函数配合实现该功能,本申请不做限制。比如,对于监听模块,某些场景下的实现方式可以是poll()函数等。
本申请中,每个应用可以与内核操作系统之间可以存在一个或多个套接字连接,每个套接字连接对应一个套接字,每个套接字具有一套套接字的接口函数,使得应用和内核操作系统均可利用这套套接字的接口函数进行数据的发送与接收、状态的实时获取、信息的交互等操作。
例如,内核操作系统或者应用可以调用套接字中的select()函数实时监听套接字连接相关的各种状态参数,如内核操作系统与应用的连接状态标识、套接字连接的标识及数据的可读取标识等,也可以调用套接字中的read()函数读取数据。
其中,应用可以通过判断自设的通信需求类型是否为非时延敏感型,也可以根据应用中的缓冲数据是否大于预设值,来确定应用当前情况下是否为非时延敏感型应用。该预设值可以根据实际经验进行设置,本申请对此不做限定。
进一步地,应用和操作系统中可以设置一个接口SO_RCVLOWAT_TIMEOUT,因此,应用在应用为非时延敏感型应用时,可以调用该接口SO_RCVLOWAT_TIMEOUT,向操作系统发送包括套接字连接的标识的启动指令,以通过该启动指令向操作系统告知应用当前可以缓慢接收内核缓冲区中接收的套接字连接的数据。
其中,该接口SO_RCVLOWAT_TIMEOUT的具体结构为:
struct rcvlowat_timeout接口名称{
uint32_t rcvlowat;最小水位线
uint64_t timeout;超时时长
};
其中,rcvlowat和timeout参数可以省略。
本申请中,在应用向操作系统发送启动指令之前,应用需要获知套接字连接的标识。该套接字连接的标识可以为事先建立的,也可以为在发送启动指令之前建立的。其中,套接字连接可以为一个或者多个。
下面,采用以一个套接字连接的建立过程为例,对应用获知套接字连接的标识的具体过程进行详细说明。
具体地,应用可以向操作系统发送连接建立指令,如输入/输出I/O操作指令。其中,该连接建立指令可以由用户作用于应用的某些动作或者行为,也可以是应用在运行过程中为了执行某个任务产生的。
例如,应用为浏览器,用户点击浏览器显示的某个链接,或者输入某个网站的账号或者密码,那么该链接的数据或者用户输入的账号或者密码就是应用向操作系统发送的连接建立指令。
又如,应用为视频播放器,为了缓冲视频播放器中用户观看的视频,会产生需要发送给操作系统的请求数据,那么该请求数据就是该连接建立指令。
需要说明的是,操作系统除了上述被动接收应用发送连接建立指令之外,还可以通过调用监听模块,实时监听网络并等待应用发送的连接建立请求。
进一步地,操作系统可以根据连接建立请求,建立与应用对应的套接字连接,为套接字连接分配对应的标识,并将套接字连接的标识存储在本地缓冲区中,其中,本地缓冲区中的数据可存储在设备的存储器中。进而,应用可以在本地缓冲区中读取该套接字连接的标识。
其中,套接字连接的标识用于唯一表示套接字连接,使得操作系统可以根据该标识确定对应的套接字连接、该套接字连接对应的应用以及该套接字连接对应的一套套接字的接口函数。本申请对该标识的具体实现形式不做限定。如,该标识可以为socket连接的文件描述符(file descriptor,FD)。
本申请中,启动指令可以采用现有技术中的报文,也可以采用其他形式,本申请对此不做限定。例如,启动指令采用帧头和数据包的形式,将套接字连接的标识携带于数据包中。
进一步地,本申请对启动指令的具体内容也不做限定。当启动指令包括:套接字连接的标识时,操作系统可以根据事先存储的套接字连接的标识、最低水位线以及超长时长的映射关系,确定出与套接字连接的标识对应的最低水位线和超时时长。
其中,本申请对操作系统确定最低水位线和超时时长的方式不做限定。可选地,操作系统中可以事先保存有套接字连接的标识、最低水位线以及两者映射关系的表格,从而操作系统可以根据查表的方式,确定套接字连接的标识对应的最低水位线。相应地,操作系统中可以事先保存有套接字连接的标识、超时时长以及两者映射关系的表格,从而操作系统可以根据查表的方式,确定套接字连接的标识对应的超时时长。其中,上述映射关系可以采用代码、数字或者标识等形式。
进一步地,应用还可以将最低水位线和/或超时时长包含在启动指令中,使得操作系统可以根据接收到的最低水位线和/或超时时长确定当前应用的通信需求类型,以调整应用接收数据的速率,从而适用于应用的实际需求。
另外,操作系统可以根据超时时长确定最低水位线,也可以根据最低水位线确定超时时长,具体方式可参见套接字连接的标识确定最低水位线和超时时长的具体内容,此处不做赘述。
本申请中,操作系统可以调用监听模块,监听内核缓冲区缓存套接字连接的数据的情况。即操作系统可以调用select()函数,可以获取select()函数返回的状态信息,该状态信号表示内核缓冲区缓存套接字连接的数据的情况。
其中,该情况可以为内核缓冲区中缓存套接字连接的数据的时长,也可以为内核缓冲区中缓存套接字连接的数据,还可以为其他参数,本申请对此不做限定。
具体地,监听模块可以利用定时器,来确定内核缓冲区中缓存套接字连接的数据的时长是否超过超时时长,即当前时刻与起始时刻间的时间间隔是否大于或等于超时时长。其中,监控模块可以在接收启动指令的时(即初始时刻)启动定时器,且设置定时器的时长为超时时长。进而,监听模块通过监听定时器是否生成标识,来确定当前时刻与起始时刻间的时间间隔是否大于或等于超时时长。其中,上述定时器可以为监听模块事先设置的,也可以在接收到启动指令时临时设置。
当监听模块接收到未超时标识或者未接收到任一标识时,监听模块可以确定当前时刻与起始时刻间的时间间隔小于超时时长。当监听模块接收到超时标识时,监听模块可以确定当前时刻与起始时刻间的时间间隔大于或等于超时时长。
本申请中,起始时刻和当前时刻可使用相同的表示方式,便于计算当前时刻与起始时刻间的时间间隔。
本申请中的定时器可以有多种实现方式,不做限制。例如可以是倒计时的,则超时就是该定时器的时间耗尽。
具体地,起始时刻和当前时刻可以采用绝对时间。例如,如果起始时刻为10点10分,当前时刻为10点11分,那么当前时刻与起始时刻间的时间间隔为1分。起始时刻和当前时刻也可采用相对时间。例如,起始时刻为0,当前时刻为从0开始计时起的10s,那么当前时刻与起始时刻间的时间间隔为10s。
由于内核缓冲区中可能未接收到套接字连接的数据,因此,为了避免应用读取空数据,因此,在当前时刻与起始时刻间的时间间隔大于或等于超时时长时,操作系统调用监听模块,可以确定内核缓冲区中是否缓存有套接字连接的数据。
进而,在确定内核缓冲区中缓存有套接字连接的数据时,应用可接收到监听模块生成的第一数据可读标识。监听模块在确定内核缓冲区中未缓存有套接字连接的数据时,可以继续等待接收套接字连接的数据,或者通过其他事件触发而退出,以减少系统调用的次数,降低设备的处理压力。
进一步地,同时考量超时时长和最低水位线这两个参数的影响,监听模块在监听当前时刻与起始时刻间的时间间隔是否超过超时时长的过程中,还可以监听内核缓冲区缓存套接字连接的数据是否超过最低水位线,即从操作系统根据启动指令调用监听模块监听内核缓冲区,到监听模块向应用发送数据可读标识的过程中,监听模块监听内核缓冲区缓存套接字连接的数据是否超过最低水位线。
具体地,监控模块在当前时刻与起始时刻间的时间间隔小于超时时长时,可以监听内核缓冲区缓存套接字连接的数据是否超过最低水位线。进而,监控模块一旦监测到内核缓冲区中套接字连接的数据大于或等于最低水位线,即内核缓冲区中应用待接收的数据的最大可用空间已满,监控模块便可生成第二数据可读标识,从而应用根据该第二数据可读标识,及时读取接收的套接字连接的数据,从而降低了内核缓冲区的存储压力和设备的存储成本。否则,操作系统模块可以继续监听当前时刻与起始时刻间的时间间隔大于或等于超时时长,直至当前时刻与起始时刻间的时间间隔大于或等于超时时长,执行步骤S103。
其中,第一数据可读标识(即数据可读标识)和第二数据可读标识的具体形式可以相同,也可以不同,均可以采用标识、数字、代码等形式,本申请对此不做限定。例如,第一数据可读标识和第二数据可读标识为“1”时,表示可读;第一数据可读标识和第二数据可读标识为“0”时,表示不可读。
通过第一方面提供的数据传输方法,通过设备中的应用在应用为非时延敏感型应用时,可以向设备的操作系统发送包含有套接字连接的标识的启动指令,使得操作系统可以确定当前应用可以缓慢接收数据。操作系统根据启动指令,调用监听模块监听内核缓冲区缓存套接字连接的数据的情况,其中,套接字连接的数据来自底层协议栈。进而,在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,监听模块生成数据可读标识,操作系统便可接收监听模块生成的数据可读标识其中,起始时刻为操作系统接收到启动指令的时刻,数据可读标识指示内核缓冲区中接收的套接字连接的数据为应用可读。从而,操作系统可以将内核缓冲区中接收的套接字连接的数据发送至套接字连接的接收滑动窗口中,使得应用可以根据监测模块生成的数据可读标识,调用读取模块,从套接字连接对应的接收窗口中读取套接字连接的数据。本申请中,通过时间限制,优化了数据的缓存过程,实现了应用缓慢接收数据的过程,满足了应用的实际需求,使得设备的消耗和时延平衡达到最佳平衡,解决了现有技术中由于数据量不足而需要额外系统调用的问题,降低了设备的能量损耗,从而节省了设备的资源,降低了设备的功耗。
在一种可能的设计中,所述监听模块中包括定时器,所述定时器的时长为所述超时时长,所述方法还包括:
所述操作系统根据所述启动指令,启动所述定时器。
在一种可能的设计中,所述方法还包括:
所述监听模块在所述定时器超时时,确定所述内核缓冲区中缓存有所述套接字连接的数据。
在一种可能的设计中,所述操作系统根据所述启动指令,调用监听模块监听内核缓冲区缓存所述套接字连接的数据的情况,包括:
所述操作系统根据所述启动指令,调用所述监听模块监听内核缓冲区缓存所述套接字连接的数据是否超过最低水位线。
其中,最低水位线为内核缓冲区中应用待接收的数据的最大可用空间。
通常,内核缓冲区中应用待接收的数据的可用空间越大,最低水位线可以设置的越大。套接字连接所使用网络的时延越不敏感,最低水位线可以设置的越大。套接字连接所使用网络的丢包率越低,最低水位线可以设置的越大。套接字连接所使用网络的带宽越大,最低水位线可以设置的越大。套接字连接对应的接收窗口的最大值越大,最低水位线可以设置的越大,一般情况下,最低水位线小于接收窗口的最大值越大;若最低水位线大于等于接收窗口的最大值越大时,可以重新调整接收窗口的最大值越大为最低水位线的若干倍。
其中,通信需求类型指的是应用在通信过程中与操作系统交互数据的特点。通信需求类型可以通过应用的自身属性或者如应用的上传量和下载量等参数确定,具体可以包括但不限于吞吐量需求类型和时延需求类型。
进而,应用可以为高吞吐量型应用、低吞吐量型应用、非时延敏感型应用、时延敏感型应用等。如,应用A为文件存储应用程序,根据其自身属性可以确定应用A为非时延敏感型应用。又如,应用A为视频播放器,应用的自身属性可以确定应用A为时延敏感型应用。但当应用A已经有50%视频缓冲时,可以确定应用A为非时延敏感型应用。通常,非时延敏感型应用,其最低水位线可以设置的越大;时延敏感型应用,其最低水位线可以设置的越小。
在一种可能的设计中,所述操作系统根据所述启动指令,调用所述监听模块监听内核缓冲区缓存所述套接字连接的数据是否超过最低水位线,包括:
从根据所述启动指令调用所述监听模块监听内核缓冲区,到所述监听模块向所述应用发送数据可读标识的过程中,所述监听模块监听到所述内核缓冲区缓存所述套接字连接的数据未超过所述最低水位线。
在一种可能的设计中,所述超时时长是根据如下至少一个指标设置的;
所述套接字连接所使用网络的时延、所述套接字连接所使用网络的带宽、所述套接字连接所使用网络的丢包率和所述应用的通信需求类型。
其中,超时时长为内核缓冲区中缓存套接字连接的数据的最大时长。通常,套接字连接所使用网络的时延越不敏感,超时时长可以设置的越大。套接字连接所使用网络的丢包率越低,超时时长可以设置的越大。套接字连接所使用网络的带宽越大,超时时长可以设置的越大。
其中,应用的通信需求类型可参见本申请中设置最低水位线时应用的通信需求类型的具体内容,此处不做赘述。通常,非时延敏感型应用,其超时时长可以设置的越大;时延敏感型应用,其超时时长可以设置的越小。
在一种可能的设计中,所述最低水位线是根据如下至少一个指标设置的:
所述内核缓冲区中所述应用待接收的数据的可用空间、所述套接字连接所使用网络的时延、所述套接字连接所使用网络的丢包率、所述套接字连接所使用网络的带宽,所述套接字连接对应的接收窗口的最大值和所述应用的通信需求类型。
在一种可能的设计中,所述监听模块为select()函数。
在一种可能的设计中,所述操作系统中保存有所述套接字连接的标识与所述超时时长的映射关系。
在一种可能的设计中,所述启动指令还包括所述超时时长。
第二方面,本申请提供一种数据处理装置,包括:
接收模块,用于接收设备中的应用发送的启动指令,所述应用为非时延敏感型应用,所述启动指令包括:套接字连接的标识;
处理模块,用于根据所述启动指令,调用监听模块监听内核缓冲区缓存所述套接字连接的数据的情况,所述套接字连接的数据来自底层协议栈;
所述监听模块,还用于在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,生成数据可读标识;
其中,所述起始时刻为所述设备的操作系统接收到所述启动指令的时刻,所述数据可读标识指示所述内核缓冲区中接收的所述套接字连接的数据为所述应用可读。
在一种可能的设计中,所述监听模块中包括定时器,所述定时器的时长为所述超时时长,所述处理模块,还用于根据所述启动指令,启动所述定时器。
在一种可能的设计中,所述监听模块,还用于在所述定时器超时时,调用所述监听模块确定所述内核缓冲区中缓存有所述套接字连接的数据。
在一种可能的设计中,所述处理模块,还用于根据所述启动指令,调用所述监听模块监听内核缓冲区缓存所述套接字连接的数据是否超过最低水位线。
在一种可能的设计中,所述监听模块,具体用于从根据所述启动指令调用所述监听模块监听内核缓冲区,到所述监听模块向所述应用发送数据可读标识的过程中,监听到所述内核缓冲区缓存所述套接字连接的数据未超过所述最低水位线。
在一种可能的设计中,所述超时时长是根据如下至少一个指标设置的;
所述套接字连接所使用网络的时延、所述套接字连接所使用网络的带宽、所述套接字连接所使用网络的丢包率和所述应用的通信需求类型。
在一种可能的设计中,所述最低水位线是根据如下至少一个指标设置的:
所述内核缓冲区中所述应用待接收的数据的可用空间、所述套接字连接所使用网络的时延、所述套接字连接所使用网络的丢包率、所述套接字连接所使用网络的带宽,所述套接字连接对应的接收窗口的最大值和所述应用的通信需求类型。
在一种可能的设计中,所述监听模块为select()函数。
在一种可能的设计中,所述操作系统中保存有所述套接字连接的标识与所述超时时长的映射关系。
在一种可能的设计中,所述启动指令还包括所述超时时长。
上述第二方面以及上述第二方面的各可能的设计中所提供的数据处理装置,其有益效果可以参见上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不再赘述。
第三方面,本申请提供一种设备,包括:存储器和处理器;
存储器用于存储程序指令;
处理器用于调用存储器中的程序指令执行第一方面及第一方面任一种可能的设计中的数据处理方法。
第四方面,本申请提供一种可读存储介质,可读存储介质中存储有执行指令,当设备的至少一个处理器执行该执行指令时,设备执行第一方面及第一方面任一种可能的设计中的数据处理方法。
第五方面,本申请提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施第一方面及第一方面任一种可能的设计中的数据处理方法。
第六方面,本申请提供一种芯片,所述芯片与存储器相连,或者所述芯片上集成有存储器,当所述存储器中存储的软件程序被执行时,实现上述任一项所述的数据处理方法。
附图说明
图1为本申请一实施例提供的设备的架构示意图;
图2为本申请一实施例提供的设备的软件部分的架构示意图;
图3为本申请一实施例提供的数据处理方法的流程示意图;
图4为本申请一实施例提供的数据处理装置的结构示意图;
图5为本申请一实施例提供的设备的结构示意图。
具体实施方式
本申请涉及的设备可以为网络设备,也可以终端设备,本申请对此不做限定。
网络设备:可以是基站,或者接入点,或者接入网设备,或者可以是指接入网中在空中接口上通过一个或多个扇区与无线终端通信的设备。网络设备可用于将收到的空中帧与IP分组进行相互转换,作为无线终端与接入网的其余部分之间的路由器,其中接入网的其余部分可包括网际协议(IP)网络。网络设备还可协调对空中接口的属性管理。例如,网络设备可以是全球移动通讯(Global System of Mobile communication,GSM)或码分多址(Code Division Multiple Access,CDMA)中的基站(Base Transceiver Station,BTS),也可以是宽带码分多址(Wideband Code Division Multiple Access,WCDMA)中的基站(NodeB,NB),还可以是长期演进(Long Term Evolution,LTE)中的演进型基站(Evolutional Node B,eNB或eNodeB),或者中继站或接入点,或者未来5G网络中的基站,例如gNB等,在此并不限定。
终端设备:可以是无线终端也可以是有线终端,无线终端可以是指向用户提供语音和/或其他业务数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。无线终端可以经RAN与一个或多个核心网进行通信,无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据。例如,个人通信业务(Personal Communication Service,PCS)电话、无绳电话、会话发起协议(Session Initiation Protocol,SIP)话机、无线本地环路(Wireless LocalLoop,WLL)站、个人数字助理(Personal Digital Assistant,PDA)等设备。无线终端也可以称为系统、订户单元(Subscriber Unit)、订户站(Subscriber Station),移动站(MobileStation)、移动台(Mobile)、远程站(Remote Station)、远程终端(Remote Terminal)、接入终端(Access Terminal)、用户终端(User Terminal)、用户代理(User Agent)、用户设备(User Device or User Equipment),在此不作限定。
图1为本申请一实施例提供的设备的架构示意图,如图1所示,设备可以包括硬件和软件。
该设备的硬件包括各种硬件器件或装置,如存储器、处理器以及用于网络互连的网卡等。
其中,存储器包括闪存(Flash Storage)、内存和存储器控制器。
闪存具有掉电后数据不会丢失的特点,具体用于存储设备所需数据,诸如程序以及程序运行时所需的参数等。例如,boot程序、操作系统内核和复位程序等。其中,闪存可以包括多种类型,如嵌入式多媒体卡(embedded multimedia card;eMMC)或通用闪存存储(universal flash storage;UFS)存储器等。
内存为具有数据读写速度快的特点,具体用于为处理器运行时需要使用的数据提供缓存的区域。其中,内存具体可以包括各种类型的随机存储器(random-access memory,RAM),例如,双倍速同步动态随机存储器(double data rate synchronous dynamic RAM,DDR SDRAM)。
存储器控制器,用于解码处理器发出的存储器的各种读写请求,其可以是与处理器分离的独立器件,也可以集成在处理器的内部,用于专门管理对应的存储器的访问请求。
其中,处理器包括一个或多个中央处理器(central processing unit,CPU),每个CPU通常可以包括运算逻辑部件、寄存器部件和控制部件。CPU可以单独设置,也可以集成设置,例如,处理器可以为包含有至少两个CPU的系统级芯片(System on Chip,SOC)。
其中,网卡可以是一张或多张,如果是一张网卡,则通过虚拟网卡技术虚拟出多张网卡以支持多种网络;如果是多张网卡,则可以是每一张网卡支持一种网络,或其中的至少一张网卡可以使用虚拟网卡技术。
例如,终端中,有不同的网卡分别用于连接蜂窝网和无线保真(WIreless-FIdelity,Wi-Fi)。再例如,一个终端支持两个移动通信号码,例如可同时装2张SIM卡(Subscriber Identification Module),且可使用这两种蜂窝网来进行多路径传输,那么这两个移动通信号码各自使用不同的网卡。
该设备的软件包括操作系统(Operating System,OS)和运行于操作系统用户态中的应用(图1中以应用1、应用2和应用3为例进行示意)。该操作系统可以包括但不限于Linux、Android及其他系统。其中设备的软件皆存储在设备的存储器中。
其中,操作系统可分为用户态和内核态。不同的协议,协议所处位置也略有不同。例如,传输控制协议(Transmission Control Protocol,TCP)、快速UDP网络连接(QuickUDP Internet Connection,QUIC)协议以及自定义协议等为用户态协议,TCP、用户数据报协议(User Datagram Protocol,UDP)、流控制传输协议(Stream Control TransmissionProtocol,STCP)等为内核态协议。
本申请描述的方法可以代码形式存储在图1的存储器中,通过处理器的调用在软件中实现,例如图2中TCP的协议栈。由于TCP既跨内核态又跨用户态,因此,为了便于说明,以TCP的协议栈为例,对本申请的数据处理方法进行详细说明。其他协议可参照TCP的具体过程,本申请不做赘述。
图2从协议栈角度描述了本申请涉及的各种协议的相对位置。如图2所示,TCP的协议栈从下到上可以包括:网络接口层、网间层、传输层和应用层。
其中,网络接口层(interface layer)对应于开放系统互联(Open SystemInterconnection,OSI)七层参考模块中的物理层和数据链路层,其功能是接收网络媒介中的IP数据报并通过特定的网络进行传输,或从网络上接收物理帧,抽取出IP数据报并转交给网间层。
网间层(Network layer,即IP层)对应于OSI七层参考模块中的网络层,可以包括但不限于IP(网络协议)、因特网控制报文协议(Internet Control Message Protocol,ICMP)、地址解析协议(Address Resolution Protocol,ARP)、反向地址解析协议(ReverseAddress Resolution Protocol,RARP)。网间层主要负责相同或不同网络中设备之间的通信,主要处理数据报和路由。在IP层中,ARP用于将IP地址转换成物理地址,RARP用于将物理地址转换成IP地址,ICMP用于报告差错和传送控制信息。
传输层(transport layer)对应于OSI七层参考模块中的传输层,提供端到端的通信服务,即应用之间的通信,主要功能是数据格式化、数据确认和丢失重传等。传输层可以包括TCP和UDP这两个协议,TCP提供可靠的面向连接服务,UDP提供简单的无连接服务。
应用层(APP layer)对应于OSI七层参考模块中的应用层、表示层和会话层,向用户提供应用层协议,应用层协议可以包括但不限于Finger、域名查询协议(Whois)、用于传输文件的FTP(文件传输协议)、Gopher(The Internet Gopher Protocol)、用于Web浏览的超文本传输协议(HyperText Transfer Protocol,HTTP)、Telnet(远程终端协议)、简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)、因特网中继聊天(Internet RelayChat,IRC)、网络新闻传输协议(Network News Transfer Protocol,NNTP)、用于邮件(Email)的Internet邮件访问协议(Internet Mail Access Protocol,IMAP)等。
进一步地,应用层中运行有一个或多个应用。通常,应用是通过应用程序编程接口(Application Programming Interface,API)与操作系统进行信息交互的。该API可以是一套套接字(socket)的接口函数。这套接口函数可以实现多种功能,也就是实现多个模块,如监听模块(例如通过select()函数实现监听如TCP各种连接状态参数功能)、接收模块(即通过receive()函数实现接收功能)、发送模块(即通过send()函数实现发送功能)、写入模块(即通过write()函数实现写入功能)、读取模块(即通过read()函数实现读取功能)。其中,该API可以是用户自行开发的,也可以是在现有的API基础上改进得到的。当然,上述描述只是举例,实现一种功能可以有多种方式,例如可以通过多种函数实现,也可以在一种实现方式中使用多个函数配合实现该功能,本申请不做限制。比如,对于监听模块,某些场景下的实现方式可以是poll()函数等。
本申请中,每个应用可以与操作系统之间可以存在一个或多个套接字连接,每个套接字连接对应一个套接字,每个套接字具有一套套接字的接口函数,使得应用和操作系统均可利用这套套接字的接口函数进行数据的发送与接收、状态的实时获取、信息的交互等操作。
例如,操作系统或者应用可以调用套接字中的select()函数实时监听套接字连接相关的各种状态参数,如操作系统与应用的连接状态标识、套接字连接的标识及数据的可读取标识等,也可以调用套接字中的read()函数读取数据。
在实际应用过程中,为了避免频繁的系统调用,操作系统可以将套接字连接的数据缓冲至内核缓冲区中,该套接字连接的数据来自于底层协议栈的数据,其中,底层协议栈通常指的是图2中传输层以下的协议栈,如网络接口层或数据链路层。该内核缓冲区可以实现图2中传输层的协议栈,且内核缓冲区中的数据可存储在图1的存储器中。
并且,操作系统通过调用监听模块,可以监听套接字的数据与最低水位线之间的大小关系。随着内核缓冲区中缓存的套接字连接的数据的不断增多,监听模块在检测到套接字连接的数据大于或等于最低水位线时,生成数据可读标识,并向操作系统返回数据可读标识,进而操作系统可以将内核缓冲区中接收的套接字连接的数据发送至套接字连接的接收滑动窗口中,使得应用可以根据监测模块生成的数据可读标识,调用读取模块,从套接字连接对应的接收窗口中读取套接字连接的数据。
其中,最低水位线为内核缓冲区中应用待接收的数据的最大可用空间。该最低水位线可以固定或者动态设置,具体可以根据如下至少一个指标设置:
内核缓冲区中应用待接收的数据的可用空间、套接字连接所使用网络的时延、套接字连接所使用网络的丢包率、套接字连接所使用网络的带宽,套接字连接对应的接收窗口的最大值和应用的通信需求类型。
通常,内核缓冲区中应用待接收的数据的可用空间越大,最低水位线可以设置的越大。套接字连接所使用网络的时延越不敏感,最低水位线可以设置的越大。套接字连接所使用网络的丢包率越低,最低水位线可以设置的越大。套接字连接所使用网络的带宽越大,最低水位线可以设置的越大。套接字连接对应的接收窗口的最大值越大,最低水位线可以设置的越大,一般情况下,最低水位线小于接收窗口的最大值越大;若最低水位线大于等于接收窗口的最大值越大时,可以重新调整接收窗口的最大值越大为最低水位线的若干倍。
其中,通信需求类型指的是应用在通信过程中与操作系统交互数据的特点。通信需求类型可以通过应用的自身属性或者如应用的上传量和下载量等参数确定,具体可以包括但不限于吞吐量需求类型和时延需求类型。
进而,应用可以为高吞吐量型应用、低吞吐量型应用、非时延敏感型应用、时延敏感型应用等。如,应用A为文件存储应用程序,根据其自身属性可以确定应用A为非时延敏感型应用。又如,应用A为视频播放器,应用的自身属性可以确定应用A为时延敏感型应用。但当应用A已经有50%视频缓冲时,可以确定应用A为非时延敏感型应用。通常,非时延敏感型应用,其最低水位线可以设置的越大;时延敏感型应用,其最低水位线可以设置的越小。
然而,当操作系统接收来自底层协议栈的数据比较少时,套接字连接的数据在很长一段时间内会小于最低水位线,操作系统将继续在内核缓冲区中缓存套接字连接的数据,而不会向应用发送套接字连接的数据。针对这一情况,应用可以通过重新调整最低水位线来解决,但在最低水位线的重置过程中,需要多次系统调用,难以适用于存在大量套接字连接的场景,也无法满足设备的通信需求。
为了解决上述问题,本申请提供一种数据处理方法、装置及设备,可以实现设备中应用接收数据的基础上,减少系统调用的次数,从而节省了设备的资源,降低了设备的功耗。下面,以图2中的操作系统和应用为执行主体,结合图3,对本申请的数据处理方法的具体实现过程进行详细说明。
图3为本申请一实施例提供的数据处理方法的流程示意图,如图3所示,本申请的数据处理方法可以包括:
S101、设备的操作系统接收设备中的应用发送的启动指令,应用为非时延敏感型应用,启动指令包括:套接字连接的标识。
本领域技术人员可以理解,不同场景、不同时刻及不同主、客观因素下,应用可以具有不同的通信需求类型。当应用为非时延敏感型应用时,要么是应用自身对时延要求不高,要么当前场景下应用对时延要求不高,此时应用不急需接收操作系统发送内核缓冲区中接收的套接字连接的数据。
其中,应用可以通过判断自设的通信需求类型是否为非时延敏感型,也可以根据应用中的缓冲数据是否大于预设值,来确定应用当前情况下是否为非时延敏感型应用。该预设值可以根据实际经验进行设置,本申请对此不做限定。
进一步地,应用和操作系统中可以设置一个接口SO_RCVLOWAT_TIMEOUT,因此,应用在应用为非时延敏感型应用时,可以调用该接口SO_RCVLOWAT_TIMEOUT,向操作系统发送包括套接字连接的标识的启动指令,以通过该启动指令向操作系统告知应用当前可以缓慢接收内核缓冲区中接收的套接字连接的数据。
其中,该接口SO_RCVLOWAT_TIMEOUT的具体结构为:
struct rcvlowat_timeout接口名称{
uint32_t rcvlowat;最小水位线
uint64_t timeout;超时时长
};
其中,rcvlowat和timeout参数可以省略。
本申请中,在应用向操作系统发送启动指令之前,应用需要获知套接字连接的标识。该套接字连接的标识可以为事先建立的,也可以为在发送启动指令之前建立的。其中,套接字连接可以为一个或者多个。
下面,采用以一个套接字连接的建立过程为例,对应用获知套接字连接的标识的具体过程进行详细说明。
具体地,应用可以向操作系统发送连接建立指令,如输入/输出I/O操作指令。其中,该连接建立指令可以由用户作用于应用的某些动作或者行为,也可以是应用在运行过程中为了执行某个任务产生的。
例如,应用为浏览器,用户点击浏览器显示的某个链接,或者输入某个网站的账号或者密码,那么该链接的数据或者用户输入的账号或者密码就是应用向操作系统发送的连接建立指令。
又如,应用为视频播放器,为了缓冲视频播放器中用户观看的视频,会产生需要发送给操作系统的请求数据,那么该请求数据就是该连接建立指令。
需要说明的是,操作系统除了上述被动接收应用发送连接建立指令之外,还可以通过调用监听模块,实时监听网络并等待应用发送的连接建立请求。
进一步地,操作系统可以根据连接建立请求,建立与应用对应的套接字连接,为套接字连接分配对应的标识,并将套接字连接的标识存储在本地缓冲区中,其中,本地缓冲区中的数据可存储在图1的存储器中。进而,应用可以在本地缓冲区中读取该套接字连接的标识。
其中,套接字连接的标识用于唯一表示套接字连接,使得操作系统可以根据该标识确定对应的套接字连接、该套接字连接对应的应用以及该套接字连接对应的一套套接字的接口函数。本申请对该标识的具体实现形式不做限定。如,该标识可以为socket连接的文件描述符(file descriptor,FD)。
本申请中,启动指令可以采用现有技术中的报文,也可以采用其他形式,本申请对此不做限定。例如,启动指令采用帧头和数据包的形式,将套接字连接的标识携带于数据包中。
进一步地,本申请对启动指令的具体内容也不做限定。当启动指令包括:套接字连接的标识时,操作系统可以根据事先存储的套接字连接的标识、最低水位线以及超长时长的映射关系,确定出与套接字连接的标识对应的最低水位线和超时时长。
其中,本申请对操作系统确定最低水位线和超时时长的方式不做限定。可选地,操作系统中可以事先保存有套接字连接的标识、最低水位线以及两者映射关系的表格,从而操作系统可以根据查表的方式,确定套接字连接的标识对应的最低水位线。相应地,操作系统中可以事先保存有套接字连接的标识、超时时长以及两者映射关系的表格,从而操作系统可以根据查表的方式,确定套接字连接的标识对应的超时时长。其中,上述映射关系可以采用代码、数字或者标识等形式。
进一步地,应用还可以将最低水位线和/或超时时长包含在启动指令中,使得操作系统可以根据接收到的最低水位线和/或超时时长确定当前应用的通信需求类型,以调整应用接收数据的速率,从而适用于应用的实际需求。
其中,超时时长为内核缓冲区中缓存套接字连接的数据的最大时长。本申请对超时时长的具体形式不做限定。可选地,超时时长是根据如下至少一个指标设置的;
套接字连接所使用网络的时延、套接字连接所使用网络的带宽、套接字连接所使用网络的丢包率和应用的通信需求类型。
通常,套接字连接所使用网络的时延越不敏感,超时时长可以设置的越大。套接字连接所使用网络的丢包率越低,超时时长可以设置的越大。套接字连接所使用网络的带宽越大,超时时长可以设置的越大。
其中,应用的通信需求类型可参见本申请中设置最低水位线时应用的通信需求类型的具体内容,此处不做赘述。通常,非时延敏感型应用,其超时时长可以设置的越大;时延敏感型应用,其超时时长可以设置的越小。
另外,操作系统可以根据超时时长确定最低水位线,也可以根据最低水位线确定超时时长,具体方式可参见套接字连接的标识确定最低水位线和超时时长的具体内容,此处不做赘述。
S102、操作系统根据启动指令,调用监听模块监听内核缓冲区缓存套接字连接的数据的情况,套接字连接的数据来自底层协议栈。
本申请中,操作系统可以调用监听模块,监听内核缓冲区缓存套接字连接的数据的情况。即操作系统可以调用select()函数,可以获取select()函数返回的状态信息,该状态信号表示内核缓冲区缓存套接字连接的数据的情况。
其中,该情况可以为内核缓冲区中缓存套接字连接的数据的时长,也可以为内核缓冲区中缓存套接字连接的数据,还可以为其他参数,本申请对此不做限定。
由于当前应用对时延需求不敏感,且基于S101的内容,操作系统可以根据接收到的启动指令得到超时时长。因此,操作系统调用监听模块,可以监听内核缓冲区中缓存套接字连接的数据的时长是否超过超时时长,来减缓应用的数据接收速度,满足应用的实际需求。
具体地,监听模块可以利用定时器,来确定内核缓冲区中缓存套接字连接的数据的时长是否超过超时时长,即当前时刻与起始时刻间的时间间隔是否大于或等于超时时长。其中,监控模块可以在接收启动指令的时(即初始时刻)启动定时器,且设置定时器的时长为超时时长。进而,监听模块通过监听定时器是否返回标识,来确定当前时刻与起始时刻间的时间间隔是否大于或等于超时时长。其中,上述定时器可以为监听模块事先设置的,也可以在接收到启动指令时临时设置。
当监听模块接收到未超时标识或者未接收到任一标识时,监听模块可以确定当前时刻与起始时刻间的时间间隔小于超时时长。当监听模块接收到超时标识时,监听模块可以确定当前时刻与起始时刻间的时间间隔大于或等于超时时长。
本申请中,起始时刻和当前时刻可使用相同的表示方式,便于计算当前时刻与起始时刻间的时间间隔。
本申请中的定时器可以有多种实现方式,不做限制。例如可以是倒计时的,则超时就是该定时器的时间耗尽。
具体地,起始时刻和当前时刻可以采用绝对时间。例如,如果起始时刻为10点10分,当前时刻为10点11分,那么当前时刻与起始时刻间的时间间隔为1分。起始时刻和当前时刻也可采用相对时间。例如,起始时刻为0,当前时刻为从0开始计时起的10s,那么当前时刻与起始时刻间的时间间隔为10s。
S103、在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,监听模块生成数据可读标识,其中,所述起始时刻为所述操作系统接收到所述启动指令的时刻,所述数据可读标识指示所述内核缓冲区中接收的所述套接字连接的数据为所述应用可读。
本申请中,在当前时刻与起始时刻间的时间间隔大于或等于超时时长时,定时器超时,监听模块可以生成第一数据可读标识(即S103中的数据可读标识),进而操作系统可以接收到监听模块生成的第一数据可读标识,从而确认内核缓冲区中缓存套接字连接的数据的最大时长已耗尽。进而,应用也根据监听模块生成的第一数据可读标识,调用读取模块,来读取内核缓冲区中接收的套接字连接的数据,减缓了应用接收数据的过程,满足了应用的实际需求,降低了设备的传输压力。
进一步地,由于内核缓冲区中可能未接收到套接字连接的数据,因此,为了避免应用读取空数据,因此,在当前时刻与起始时刻间的时间间隔大于或等于超时时长时,监听模块可以确定内核缓冲区中是否缓存有套接字连接的数据。
进而,在确定内核缓冲区中缓存有套接字连接的数据时,应用可接收到监听模块生成的第一数据可读标识。监听模块在确定内核缓冲区中未缓存有套接字连接的数据时,可以继续等待接收套接字连接的数据,或者通过其他事件触发而退出,以减少系统调用的次数,降低设备的处理压力。
另外,基于S101的内容,操作系统除了根据启动指令得到超时时长,还可以得到最低水位线。进而,操作系统调用监听模块,不仅可以监听内核缓冲区缓存套接字连接的数据的时长,还可以监听内核缓冲区缓存套接字连接的数据。
进一步地,同时考量超时时长和最低水位线这两个参数的影响,监听模块在监听当前时刻与起始时刻间的时间间隔是否超过超时时长的过程中,还可以监听内核缓冲区缓存套接字连接的数据是否超过最低水位线,即从操作系统根据启动指令调用监听模块监听内核缓冲区,到监听模块向应用发送数据可读标识的过程中,监听模块监听内核缓冲区缓存套接字连接的数据是否超过最低水位线。
具体地,监控模块在当前时刻与起始时刻间的时间间隔小于超时时长时,可以监听内核缓冲区缓存套接字连接的数据是否超过最低水位线。进而,监控模块一旦监测到内核缓冲区中套接字连接的数据大于或等于最低水位线,即内核缓冲区中应用待接收的数据的最大可用空间已满,监控模块便可生成第二数据可读标识,从而应用根据该第二数据可读标识,及时读取接收的套接字连接的数据,从而降低了内核缓冲区的存储压力和设备的存储成本。否则,操作系统模块可以继续监听当前时刻与起始时刻间的时间间隔大于或等于超时时长,直至当前时刻与起始时刻间的时间间隔大于或等于超时时长,执行步骤S103。
其中,第一数据可读标识和第二数据可读标识的具体形式可以相同,也可以不同,均可以采用标识、数字、代码等形式,本申请对此不做限定。例如,第一数据可读标识和第二数据可读标识为“1”时,表示可读;第一数据可读标识和第二数据可读标识为“0”时,表示不可读。
进一步地,操作系统在接收到监听模块生成的第一数据可读标识或第二数据可读标识时,可以将内核缓冲区中接收的套接字连接的数据发送至套接字连接的接收滑动窗口中,使得应用可以根据监测模块生成的第一数据可读标识或第二数据可读标识,调用读取模块,从套接字连接对应的接收窗口中读取套接字连接的数据。
本申请提供的数据处理方法,通过设备中的应用在应用为非时延敏感型应用时,可以向设备的操作系统发送包含有套接字连接的标识的启动指令,使得操作系统可以确定当前应用可以缓慢接收数据。操作系统根据启动指令,调用监听模块监听内核缓冲区缓存套接字连接的数据的情况,其中,套接字连接的数据来自底层协议栈。进而,在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,监听模块生成数据可读标识,操作系统便可接收监听模块生成的数据可读标识其中,起始时刻为操作系统接收到启动指令的时刻,数据可读标识指示内核缓冲区中接收的套接字连接的数据为应用可读。从而,操作系统可以将内核缓冲区中接收的套接字连接的数据发送至套接字连接的接收滑动窗口中,使得应用可以根据监测模块生成的数据可读标识,调用读取模块,从套接字连接对应的接收窗口中读取套接字连接的数据。本申请中,通过时间限制,优化了数据的缓存过程,实现了应用缓慢接收数据的过程,满足了应用的实际需求,使得设备的消耗和时延平衡达到最佳平衡,解决了现有技术中由于数据量不足而需要额外系统调用的问题,降低了设备的能量损耗,从而节省了设备的资源,降低了设备的功耗。
示例性的,本申请实施例还提供一种数据处理装置,图4为本申请一实施例提供的数据处理装置的结构示意图,数据处理装置10用于实现上述任一方法实施例中对应于设备的操作系统的操作,如图4所示,该数据处理装置10可以包括:接收模块11和处理模块12
接收模块11,用于接收设备中的应用发送的启动指令,所述应用为非时延敏感型应用,所述启动指令包括:套接字连接的标识;
处理模块12,用于根据所述启动指令,调用监听模块13监听内核缓冲区缓存所述套接字连接的数据的情况,所述套接字连接的数据来自底层协议栈;
所述监听模块13,还用于在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,生成数据可读标识;
其中,所述起始时刻为所述设备的操作系统接收到所述启动指令的时刻,所述数据可读标识指示所述内核缓冲区中接收的所述套接字连接的数据为所述应用可读。
在一些实施例中,所述监听模块中包括定时器,所述定时器的时长为所述超时时长,所述处理模块12,还用于根据所述启动指令,启动所述定时器。
在一些实施例中,所述监听模块13,还用于在所述定时器超时时,确定所述内核缓冲区中缓存有所述套接字连接的数据。
在一些实施例中,所述处理模块12,还用于根据所述启动指令,调用所述监听模块监听内核缓冲区缓存所述套接字连接的数据是否超过最低水位线。
在一些实施例中,所述监听模块13,具体用于从根据所述启动指令调用所述监听模块监听内核缓冲区,到所述监听模块向所述应用发送数据可读标识的过程中,监听到所述内核缓冲区缓存所述套接字连接的数据未超过所述最低水位线。
在一些实施例中,所述超时时长是根据如下至少一个指标设置的;
所述套接字连接所使用网络的时延、所述套接字连接所使用网络的带宽、所述套接字连接所使用网络的丢包率和所述应用的通信需求类型。
在一些实施例中,所述最低水位线是根据如下至少一个指标设置的:
所述内核缓冲区中所述应用待接收的数据的可用空间、所述套接字连接所使用网络的时延、所述套接字连接所使用网络的丢包率、所述套接字连接所使用网络的带宽,所述套接字连接对应的接收窗口的最大值和所述应用的通信需求类型。
在一些实施例中,所述监听模块为select()函数。
在一些实施例中,所述操作系统中保存有所述套接字连接的标识与所述超时时长的映射关系。
在一些实施例中,所述启动指令还包括所述超时时长。
本实施例的数据处理装置,可以用于执行图1-图3所示方法实施例中设备的技术方案,其实现原理和技术效果类似,其中各个模块的实现的操作可以进一步参考方法实施例的相关描述,此处不再赘述。此处的模块也可以替换为部件或者电路。
本申请可以根据上述方法示例对数据处理装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。一种实现方式下,上述装置是操作系统的一部分。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请各实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图5为本申请一实施例提供的设备的结构示意图,如图5所示,该设备20包括:
存储器21,用于存储程序指令,该存储器21可以是flash(闪存)。存储器21中还存储有设备的操作系统和设备中的应用。
处理器22,用于调用并执行存储器中的程序指令,以实现图1-图3的数据处理方法中对应设备的各个步骤。具体可以参见前面方法实施例中的相关描述。
还可以包括输入/输出接口23。输入/输出接口23可以包括独立的输出接口和输入接口,也可以为集成输入和输出的集成接口。其中,输出接口用于输出数据,输入接口用于获取输入的数据,上述输出的数据为上述方法实施例中输出的统称,输入的数据为上述方法实施例中输入的统称。
该设备20可以用于执行上述方法实施例中相应的设备对应的各个步骤和/或流程。
本申请还提供一种可读存储介质,可读存储介质中存储有执行指令,当终端设备的至少一个处理器执行该执行指令时,终端设备执行上述方法实施例中的数据处理方法。
本申请还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述方法实施例中的数据处理方法。
本申请还提供一种芯片,芯片与存储器相连,或者芯片上集成有存储器,当存储器中存储的软件程序被执行时,实现上述方法实施例中的数据处理方法。
本领域普通技术人员可以理解:在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
Claims (23)
1.一种数据处理方法,其特征在于,包括:
设备的操作系统接收所述设备中的应用发送的启动指令,所述应用为非时延敏感型应用,所述启动指令包括:套接字连接的标识;
所述操作系统根据所述启动指令,调用监听模块监听内核缓冲区缓存所述套接字连接的数据的情况,所述套接字连接的数据来自底层协议栈;
在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,所述监听模块生成数据可读标识;
其中,所述起始时刻为所述操作系统接收到所述启动指令的时刻,所述数据可读标识指示所述内核缓冲区中接收的所述套接字连接的数据为所述应用可读。
2.根据权利要求1所述的方法,其特征在于,所述监听模块中包括定时器,所述定时器的时长为所述超时时长,所述方法还包括:
所述操作系统根据所述启动指令,启动所述定时器。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述监听模块在所述定时器超时时,确定所述内核缓冲区中缓存有所述套接字连接的数据。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述操作系统根据所述启动指令,调用监听模块监听内核缓冲区缓存所述套接字连接的数据的情况,包括:
所述操作系统根据所述启动指令,调用所述监听模块监听内核缓冲区缓存所述套接字连接的数据是否超过最低水位线。
5.根据权利要求4所述的方法,其特征在于,所述操作系统根据所述启动指令,调用所述监听模块监听内核缓冲区缓存所述套接字连接的数据是否超过最低水位线,包括:
从根据所述启动指令调用所述监听模块监听内核缓冲区,到所述监听模块向所述应用发送数据可读标识的过程中,所述监听模块监听到所述内核缓冲区缓存所述套接字连接的数据未超过所述最低水位线。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述超时时长是根据如下至少一个指标设置的;
所述套接字连接所使用网络的时延、所述套接字连接所使用网络的带宽、所述套接字连接所使用网络的丢包率和所述应用的通信需求类型。
7.根据权利要求4或5所述的方法,其特征在于,所述最低水位线是根据如下至少一个指标设置的:
所述内核缓冲区中所述应用待接收的数据的可用空间、所述套接字连接所使用网络的时延、所述套接字连接所使用网络的丢包率、所述套接字连接所使用网络的带宽,所述套接字连接对应的接收窗口的最大值和所述应用的通信需求类型。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述监听模块为select()函数。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述操作系统中保存有所述套接字连接的标识与所述超时时长的映射关系。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述启动指令还包括所述超时时长。
11.一种数据处理装置,其特征在于,包括:
接收模块,用于接收设备中的应用发送的启动指令,所述应用为非时延敏感型应用,所述启动指令包括:套接字连接的标识;
处理模块,用于根据所述启动指令,调用监听模块监听内核缓冲区缓存所述套接字连接的数据的情况,所述套接字连接的数据来自底层协议栈;
所述监听模块,还用于在当前时刻与起始时刻间的时间间隔大于或等于超时时长的情况下,生成数据可读标识;
其中,所述起始时刻为所述设备的操作系统接收到所述启动指令的时刻,所述数据可读标识指示所述内核缓冲区中接收的所述套接字连接的数据为所述应用可读。
12.根据权利要求11所述的装置,其特征在于,所述监听模块中包括定时器,所述定时器的时长为所述超时时长,所述处理模块,还用于根据所述启动指令,启动所述定时器。
13.根据权利要求12所述的装置,其特征在于,所述监听模块,还用于在所述定时器超时时,确定所述内核缓冲区中缓存有所述套接字连接的数据。
14.根据权利要求11-13任一项所述的装置,其特征在于,所述处理模块,还用于根据所述启动指令,调用所述监听模块监听内核缓冲区缓存所述套接字连接的数据是否超过最低水位线。
15.根据权利要求14所述的装置,其特征在于,所述监听模块,用于从根据所述启动指令调用所述监听模块监听内核缓冲区,到所述监听模块向所述应用发送数据可读标识的过程中,监听到所述内核缓冲区缓存所述套接字连接的数据未超过所述最低水位线。
16.根据权利要求11-15任一项所述的装置,其特征在于,所述超时时长是根据如下至少一个指标设置的;
所述套接字连接所使用网络的时延、所述套接字连接所使用网络的带宽、所述套接字连接所使用网络的丢包率和所述应用的通信需求类型。
17.根据权利要求14或15所述的装置,其特征在于,所述最低水位线是根据如下至少一个指标设置的:
所述内核缓冲区中所述应用待接收的数据的可用空间、所述套接字连接所使用网络的时延、所述套接字连接所使用网络的丢包率、所述套接字连接所使用网络的带宽,所述套接字连接对应的接收窗口的最大值和所述应用的通信需求类型。
18.根据权利要求11-17任一项所述的装置,其特征在于,所述监听模块为select()函数。
19.根据权利要求11-18任一项所述的装置,其特征在于,所述操作系统中保存有所述套接字连接的标识与所述超时时长的映射关系。
20.根据权利要求11-19任一项所述的装置,其特征在于,所述启动指令还包括所述超时时长。
21.一种设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储程序指令;
所述处理器用于调用所述存储器中的程序指令执行权利要求1-10任一项所述的数据处理方法。
22.一种可读存储介质,其特征在于,所述可读存储介质中存储有执行指令,当设备的至少一个处理器执行该执行指令时,所述设备执行权利要求1-10任一项所述的数据处理方法。
23.一种计算机程序,其特征在于,包括程序或指令,当所述程序或指令在计算机上运行时,如权利要求1-10任一项所述的数据处理方法被执行。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910200163.7A CN111698275B (zh) | 2019-03-15 | 2019-03-15 | 数据处理方法、装置及设备 |
EP20774635.5A EP3793176A4 (en) | 2019-03-15 | 2020-03-16 | DATA PROCESSING METHOD, DEVICE AND DEVICE |
PCT/CN2020/079524 WO2020187186A1 (zh) | 2019-03-15 | 2020-03-16 | 数据处理方法、装置及设备 |
US17/135,397 US11647104B2 (en) | 2019-03-15 | 2020-12-28 | Data processing method and apparatus, and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910200163.7A CN111698275B (zh) | 2019-03-15 | 2019-03-15 | 数据处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111698275A true CN111698275A (zh) | 2020-09-22 |
CN111698275B CN111698275B (zh) | 2021-12-14 |
Family
ID=72475527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910200163.7A Active CN111698275B (zh) | 2019-03-15 | 2019-03-15 | 数据处理方法、装置及设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11647104B2 (zh) |
EP (1) | EP3793176A4 (zh) |
CN (1) | CN111698275B (zh) |
WO (1) | WO2020187186A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112511848A (zh) * | 2020-11-09 | 2021-03-16 | 网宿科技股份有限公司 | 直播方法、服务端及计算机可读存储介质 |
CN114268416A (zh) * | 2021-12-16 | 2022-04-01 | 无锡联云世纪科技股份有限公司 | 数据传输方法、装置及电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900875B (zh) * | 2022-04-26 | 2024-03-19 | 安徽农业大学 | 可降低功耗的个人智能终端应用程序网络数据接收方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7065581B2 (en) * | 2001-06-27 | 2006-06-20 | International Business Machines Corporation | Method and apparatus for an improved bulk read socket call |
US20090103515A1 (en) * | 2005-12-15 | 2009-04-23 | Danger, Inc. | System and method for preserving socket connections over a wireless network |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN102202094A (zh) * | 2011-05-13 | 2011-09-28 | 中兴通讯股份有限公司 | 一种基于http的业务请求处理方法及装置 |
CN102761518A (zh) * | 2011-04-25 | 2012-10-31 | 中兴通讯股份有限公司 | 一种支持多种套接字连接模式的通信方法及服务器 |
CN103888441A (zh) * | 2014-01-03 | 2014-06-25 | 北京太一星晨信息技术有限公司 | 一种应用程序与协议栈之间的信息传输方法及处理装置 |
CN105940658A (zh) * | 2015-01-04 | 2016-09-14 | 华为技术有限公司 | 一种用户数据的传输方法、装置及终端 |
CN106201830A (zh) * | 2016-07-27 | 2016-12-07 | 福建富士通信息软件有限公司 | 一种基于epoll写数据监视的方法以及系统 |
CN109088799A (zh) * | 2018-09-28 | 2018-12-25 | 腾讯科技(深圳)有限公司 | 一种客户端接入方法、装置、终端以及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030231657A1 (en) | 2002-06-12 | 2003-12-18 | Kacheong Poon | System and method for a multi-data network layer transmit interface |
US7613813B2 (en) * | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
CN108156172B (zh) * | 2018-01-09 | 2020-03-17 | 四川九洲电器集团有限责任公司 | 一种高速接收tcp数据的方法 |
-
2019
- 2019-03-15 CN CN201910200163.7A patent/CN111698275B/zh active Active
-
2020
- 2020-03-16 EP EP20774635.5A patent/EP3793176A4/en active Pending
- 2020-03-16 WO PCT/CN2020/079524 patent/WO2020187186A1/zh unknown
- 2020-12-28 US US17/135,397 patent/US11647104B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7065581B2 (en) * | 2001-06-27 | 2006-06-20 | International Business Machines Corporation | Method and apparatus for an improved bulk read socket call |
US20090103515A1 (en) * | 2005-12-15 | 2009-04-23 | Danger, Inc. | System and method for preserving socket connections over a wireless network |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN102761518A (zh) * | 2011-04-25 | 2012-10-31 | 中兴通讯股份有限公司 | 一种支持多种套接字连接模式的通信方法及服务器 |
CN102202094A (zh) * | 2011-05-13 | 2011-09-28 | 中兴通讯股份有限公司 | 一种基于http的业务请求处理方法及装置 |
CN103888441A (zh) * | 2014-01-03 | 2014-06-25 | 北京太一星晨信息技术有限公司 | 一种应用程序与协议栈之间的信息传输方法及处理装置 |
CN105940658A (zh) * | 2015-01-04 | 2016-09-14 | 华为技术有限公司 | 一种用户数据的传输方法、装置及终端 |
CN106201830A (zh) * | 2016-07-27 | 2016-12-07 | 福建富士通信息软件有限公司 | 一种基于epoll写数据监视的方法以及系统 |
CN109088799A (zh) * | 2018-09-28 | 2018-12-25 | 腾讯科技(深圳)有限公司 | 一种客户端接入方法、装置、终端以及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112511848A (zh) * | 2020-11-09 | 2021-03-16 | 网宿科技股份有限公司 | 直播方法、服务端及计算机可读存储介质 |
CN114268416A (zh) * | 2021-12-16 | 2022-04-01 | 无锡联云世纪科技股份有限公司 | 数据传输方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3793176A4 (en) | 2021-10-13 |
WO2020187186A1 (zh) | 2020-09-24 |
US20210120107A1 (en) | 2021-04-22 |
US11647104B2 (en) | 2023-05-09 |
EP3793176A1 (en) | 2021-03-17 |
CN111698275B (zh) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2770181C2 (ru) | Способ и устройство для идентификации службы и сетевое устройство | |
US10826830B2 (en) | Congestion processing method, host, and system | |
CN111698275B (zh) | 数据处理方法、装置及设备 | |
EP3621360B1 (en) | System information transmission method and related device | |
JP2019525553A (ja) | 低頻度の小さいデータのための効率的な送達方法および装置 | |
CN112631788B (zh) | 数据传输方法及数据传输服务器 | |
CN109218369B (zh) | 远程过程调用请求控制方法及装置 | |
EP4156766A1 (en) | Data packet sending method and apparatus | |
WO2024037296A1 (zh) | 基于协议族的quic数据传输方法及装置 | |
US10136375B2 (en) | Method for service data management, apparatus, and system | |
JP2015109702A (ja) | 基地局プロセッサにおける無線チャネルの割当て | |
WO2023173876A1 (zh) | 数据通信方法、装置、设备和介质 | |
US20080186847A1 (en) | Link-aware throughput acceleration profiles | |
CN107548105B (zh) | 一种基于udp的数据传输确认方法和基站 | |
CN111417108B (zh) | 一种数据传输方法、网络设备和存储介质 | |
CN113301605A (zh) | 消息传输方法、系统及相关装置 | |
US9467897B2 (en) | Method and system for managing a temporary block flow in a data communication network environment | |
CN112637894A (zh) | 资源配置方法、装置、接入网设备和存储介质 | |
CN113596029B (zh) | 功能手机的数据包传输方法及装置、功能手机 | |
CN114172977B (zh) | 一种传输控制协议tcp代理方法、装置及基站 | |
WO2017206031A1 (zh) | 信息传输方法及装置 | |
RU2785330C2 (ru) | Устройство, система и способ мониторинга качества обслуживания | |
Hirai et al. | A study on transmission-control middleware on an android terminal in a wlan environment | |
WO2021100178A1 (ja) | 通信装置、通信システム、通信方法、及びプログラムが格納された非一時的なコンピュータ可読媒体 | |
KR102066591B1 (ko) | 네트워크 어플리케이션을 위한 자가적응 기반의 시스템 리소스 최적화 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |