CN110308973A - 一种基于能耗优化的容器动态迁移方法 - Google Patents

一种基于能耗优化的容器动态迁移方法 Download PDF

Info

Publication number
CN110308973A
CN110308973A CN201910624987.7A CN201910624987A CN110308973A CN 110308973 A CN110308973 A CN 110308973A CN 201910624987 A CN201910624987 A CN 201910624987A CN 110308973 A CN110308973 A CN 110308973A
Authority
CN
China
Prior art keywords
container
node
cpu
memory
migrated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910624987.7A
Other languages
English (en)
Inventor
孙宁
万拥
韩光洁
高枭
韦海龙
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.)
Changzhou Campus of Hohai University
Original Assignee
Changzhou Campus of Hohai University
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 Changzhou Campus of Hohai University filed Critical Changzhou Campus of Hohai University
Priority to CN201910624987.7A priority Critical patent/CN110308973A/zh
Publication of CN110308973A publication Critical patent/CN110308973A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种基于能耗优化的容器动态迁移方法,包括以下步骤:(1)获取各节点资源利用率;(2)对容器迁移时机进行判断;(3)对待迁移容器进行选择;(4)根据CPU、内存能耗进行升序排列,选择目标节点。本发明主要关注迁移触发时间的判断、待迁移容器的选择、目标节点的选择,可以实现Docker容器动态迁移,具有降低能耗以及实现集群资源负载均衡的特点。

Description

一种基于能耗优化的容器动态迁移方法
技术领域
本发明涉及一种基于能耗优化的容器动态迁移方法。
背景技术
随着信息产业朝着移动化、数字化、智能化方向的不断推进。一些新兴信息服务模式如物联网、智慧城市、软件定义网络正在逐步改变人们的生活。近年来,云计算和大数据技术的快速发展使当前网络中的数据量急剧增加,导致数据中心规模日益增大。大规模的数据中心由于其能量消耗的急剧上升,不仅增加了数据中心的运维成本,而且增加了碳排放,对环境也造成了间接的影响,如何降低数据中心的能耗逐渐成为当前的研究热点。
Docker自开源以来,就受到大家的关注,Docker是一个可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。后期还发布了原生态的容器集群工具Swarm,方便用来管理Docker集群,使Docker集群对于用户而言相当于一个虚拟的整体。
近几年来,随着Docker虚拟化技术的日益成熟,Docker容器技术得到了很好的发展,Docker容器技术可以很好的解决传统服务器技术面临的问题。
不同的容器需求不同的维度资源,当一个节点任意维度资源耗尽时,如果有多维度资源需求的容器被启动,那么该节点将不能满足创建容器的需求。在这种情况下,其他维度的资源就被闲置了,而这些没有被利用的资源就被称为资源碎片,是一种很大的资源浪费,所以就需要减少资源碎片,实现集群负载均衡,降低容器动态迁移的能耗,提高集群的服务质量。
发明内容
针对现有容器动态迁移存在的不足,提供一种既可以降低能耗又能够保持集群资源负载均衡的容器动态迁移方法。本发明目的是提供一种基于能耗优化的容器动态迁移方法,可以达到实现集群负载均衡,降低容器迁移能耗,提高集群服务质量目的。
为了实现以上目的,本发明采用的技术方案为一种基于能耗优化的容器动态迁移方法,又可以称为Docker容器动态迁移实现降低能耗的一种方法,包括以下步骤:
(1)、获取各节点资源利用率;
(2)、对容器迁移时机进行判断;
(3)、对待迁移容器进行迁移;
(4)、根据CPU、内存、能耗进行升序排列,选择目标节点。
进一步地,所述步骤(1)获取各节点资源利用率具体包括:
CPU利用率的计算公式如下:
其中,Ucpu为节点CPU利用率,n表示CPU的利用分内核态、u表示用户态、f表示空闲态,采用命令vmstat获得状态的返回值;
内存利用率计算公式如下:
其中,Umem为节点的内存利用率,采用从/proc/meminfo命令中提取当前内存的空闲量Free和内存总量Total;
带宽利用率计算公式如下:
其中,Ubw为节点的带宽利用率,需要从/proc/net/dev命令文件中获取两个数据:flow表示从本机流入的数据包数,out表示从本机流出的数据包数,all表示源节点的吞吐能力;
I/O利用率计算公式如下:
其中,UI/O为节点的I/O口利用率,需要从命令docker stats中获取容器使用的I/O资源,VI/Oi表示I/O在容器的使用情况,TI/O表示物理节点的总的I/O资源。
进一步地,所述步骤(2)对容器迁移时机进行判断,节点PU、内存、带宽、I/O口资源的利用率可用一个四维向量表示Umul={Ucpu,Umem,Ubw,UI/O},Tup表示为高阈值,Tlow表示为低阈值,具体步骤包括:
2-1、在3个连续周期内,节点采集到的资源向量Umul的4个分量均小于阈值Tlow,则发生底触发迁移,关闭源节点;
2-2、当Ucpu>Tup。,则CPU会触发迁移;
2-3、如果Umem>Tup,则内存会触发迁移;
2-4、如果Ubw>Tup,则带宽会触发迁移;
2-5、如果UI/O>Tup,则发生I/O口触发迁移;
若是其他情况,则表明物理主机负载正常,无需迁移。
进一步地,所述步骤(3)对待迁移容器进行迁移具体包括:
3-1、在被触发的物理节点中,具有最大CPU利用率的容器记为Ccpu,若集群中的物理节点的CPU负载被触发,则选择容器Ccpu进行迁移;
3-2、在被触发的物理节点中,具有最大内存利用率的容器记为Cmen,若物理节点的内存被触发,则选择容器Cmem进行迁移;
3-3、在被触发的物理节点中,具有最大带宽利用率的容器记为Cband,若物理节点带宽负载被触发,则选择容器Cband进行迁移;
3-4、在被触发的物理节点中,具有最大I/O利用率的容器记为CI/O,若I/O口负载被触发,则选择容器CI/O进行迁移。
进一步地,所述步骤(4)对列表集合中剩余的节点按照CPU、内存、能耗进行升序排列,选择目标节点具体步骤包括:
4-1、容器迁移时间计算公式如下:
其中,vi为迁移容器内存,bi为迁移容器的带宽;
4-2、目标节点能耗计算公式如下:
其中,u1(t)表示CPU的利用率;u2(t)表示GPU的利用率,pi(u1(t))表示CPU能耗函数,pj(u2(t))表示GPU能耗函数,E表示为目标节点能耗;
4-3、集群总能耗计算公式如下:
4-4、目标节点占集群能耗百分比计算公式如下:
4-5、按照CPU利用率、内存利用率、能耗百分比进行升序排列,满足CPU、内存总资源剩余较多且源节点耗能较少条件进行迁移,计算公式如下:
D=min(α×UCPU+β×Umem+η×Ucon) PMj∈Vj
if VM(C、R)<PMj(Cj、Rj)且α+β+η=1
其中,Vj表示物理机节点集合,VM表示待迁移容器,C、R分别表示待迁移容器的CPU、内存资源,PMj表示目标节点j,Cj、Rj表示目标节点j的可用CPU、内存资源。
有益效果:本发明提出了一种基于能耗优化的容器动态迁移方法,对容器迁移时机进行判断,再对待迁移容器进行选择,最后对CPU利用率、内存利用率、能耗百分比进行升序排列,选择合适的目标节点。方案的原则是降低容器动态迁移过程中的能耗,该方法主要有以下优点:
(1)实现容器动态迁移过程中集群负载均衡;
(2)容器动态迁移过程中降低集群能耗,使得容器迁移更加高效。
附图说明
图1是本发明提供了一种基于能耗优化的容器动态迁移方法的流程图;
图2是容器迁移时间选择流程图;
图3是待迁移容器选择流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明基于能耗优化的容器动态迁移方法包括以下步骤:
(1)、获取各节点资源利用率;
(2)、对容器迁移时机进行判断;
(3)、对待迁移容器进行迁移;
(4)、根据CPU、内存、能耗进行升序排列,选择目标节点。
步骤(1)中获取节点资源利用率,资源利用率包括CPU利用率、内存利用率、带宽利用率、I/O利用率,CPU利用率的计算公式如下:
其中,Ucpu为节点CPU利用率,CPU的利用分内核态(n)、用户态(u)、空闲态(f)三种状态,采用命令vmstat获得状态的返回值;
内存利用率计算公式如下:
其中,Umem为节点的内存利用率,采用从/proc/meminfo命令中提取当前内存的空闲量Free和内存总量Total;
带宽利用率计算公式如下:
其中,Ubw为节点的带宽利用率,需要从/proc/net/dev命令文件中获取两个数据:从本机流入的数据包数(flow)和从本机流出的数据包数(out),源节点的吞吐能力为all;
I/O利用率计算公式如下:
其中,UI/O为节点的I/O口利用率,需要从指令docker stats中获取容器使用的I/O资源,VI/Oi表示I/O在容器的使用情况,TI/O表示物理节点的总的I/O资源。
如图2所示,为步骤(2)对容器迁移时间判断具体工作流程,节点CPU、内存、带宽、I/O口资源的利用率用一个四维向量表示Umul={Ucpu,Umem,Ubw,UI/O},Tup表示为高阈值,Tlow表示为低阈值,具体步骤包括:
2-1、在3个连续周期内,节点采集到的资源向量Umul的4个分量均小于阈值Tlow,则发生底触发迁移,关闭源节点;
2-2、当Ucpu>Tup。,则CPU会触发迁移;
2-3、如果Umem>Tup,则内存会触发迁移;
2-4、如果Ubw>Tup,则带宽会触发迁移;
2-5、如果UI/O>Tup,则发生I/O口触发迁移;
若是其他情况,则表明物理主机负载正常,无需迁移。
如图3所示,为步骤(3)对待迁移容器进行选择具体工作流程,具体步骤包括:
3-1、在被触发的物理节点中,具有最大CPU利用率的容器记为Ccpu,若集群中的物理节点的CPU负载被触发,则选择容器Ccpu进行迁移;
3-2、在被触发的物理节点中,具有最大内存利用率的容器记为Cmen,若物理节点的内存被触发,则选择容器Cmem进行迁移;
3-3、在被触发的物理节点中,具有最大带宽利用率的容器记为Cband,若物理节点带宽负载被触发,则选择容器Cband进行迁移;
3-4、在被触发的物理节点中,具有最大I/O利用率的容器记为CI/O,若I/O口负载被触发,则选择容器CI/O进行迁移。
步骤(4)中对列表集合中剩余的节点按照CPU、内存、能耗进行升序排列,选择目标节点:
4-1、容器迁移时间计算公式如下:
其中,vi为迁移容器内存,bi为迁移容器的带宽;
4-2、目标节点能耗计算公式如下:
其中,u1(t)表示CPU的利用率;u2(t)表示GPU的利用率,pi(u1(t))表示CPU能耗函数,pj(u2(t))表示GPU能耗函数,E表示目标节点能耗;
4-3、集群总能耗计算公式如下:
4-4、目标节点占集群能耗百分比计算公式如下:
4-5、按照CPU利用率、内存利用率、能耗百分比进行升序排列,满足CPU、内存总资源剩余较多且源节点耗能较少条件进行迁移,计算公式如下:
D=min(α×UCPU+β×Umem+η×Ucon) PMj∈Vj
if VM(C、R)<PMj(Cj、Rj)且α+β+η=1
其中,Vj表示物理机节点集合,VM表示待迁移容器,C、R分别表示待迁移容器的CPU、内存资源,PMj表示目标节点j,Cj、Rj表示目标节点j的可用CPU、内存资源。
本发明采用了容器动态迁移的方法解决了传统虚拟机迁移中的能耗高、效率低等问题,在一定程度上实现容器动态迁移过程中集群负载均衡,降低集群能耗的目的。

Claims (5)

1.一种基于能耗优化的容器动态迁移方法,其特征在于,包括以下步骤:
(1)、获取各节点资源利用率;
(2)、对容器迁移时机进行判断;
(3)、对待迁移容器进行迁移;
(4)、根据CPU、内存、能耗进行升序排列,选择目标节点。
2.根据权利要求1所述的一种基于降低能耗的容器动态迁移方法,其特征在于:所述的步骤(1)获取节点资源利用率,资源利用率包括CPU利用率、内存利用率、带宽利用率、I/O利用率;
CPU利用率的计算公式如下:
其中,Ucpu为节点CPU利用率,n表示CPU的利用分内核态、u表示用户态、f表示空闲态,采用命令vmstat获得状态的返回值;
内存利用率计算公式如下:
其中,Umem为节点的内存利用率,采用从/proc/meminfo命令中提取当前内存的空闲量Free和内存总量Total;
带宽利用率计算公式如下:
其中,Ubw为节点的带宽利用率,需要从/proc/net/dev命令文件中获取两个数据:flow表示从本机流入的数据包数,out表示从本机流出的数据包数,all表示源节点的吞吐能力;
I/O利用率计算公式如下:
其中,UI/O为节点的I/O口利用率,需要从指令docker stats中获取容器使用的I/O资源,VI/Oi表示I/O在容器的使用情况,TI/O表示物理节点的总的I/O资源。
3.根据权利要求1所述的一种基于能耗优化的容器动态迁移方法,其特征在于:所述的步骤(2)对容器迁移时机进行判断,节点CPU、内存、带宽、I/O口资源的利用率用一个四维向量表示Umul={Ucpu,Umem,Ubw,UI/O},Tup表示为高阈值,Tlow表示为低阈值;
2-1、在3个连续周期内,节点采集到的资源向量Umul的4个分量均小于阈值Tlow,则发生底触发迁移,关闭源节点;
2-2、当UCPU>Tup。,则CPU会触发迁移;
2-3、如果Umem>Tup,则内存会触发迁移;
2-4、如果Ubw>Tup,则带宽会触发迁移;
2-5、如果UI/O>Tup,则发生I/O口触发迁移;
若是其他情况,则表明物理主机负载正常,无需迁移。
4.根据权利要求1所述的一种基于能耗优化的容器动态迁移方法,其特征在于:所述的步骤(3)对待迁移容器进行选择的步骤如下:
3-1、在被触发的物理节点中,具有最大CPU利用率的容器记为Ccpu,若集群中的物理节点的CPU负载被触发,则选择容器Ccpu进行迁移;
3-2、在被触发的物理节点中,具有最大内存利用率的容器记为Cmen,若物理节点的内存被触发,则选择容器Cmem进行迁移;
3-3、在被触发的物理节点中,具有最大带宽利用率的容器记为Cband,若物理节点带宽负载被触发,则选择容器Cband进行迁移;
3-4、在被触发的物理节点中,具有最大I/O利用率的容器记为CI/O,若I/O口负载被触发,则选择容器CI/O进行迁移。
5.根据权利要求1所述的一种基于能耗优化的容器动态迁移方法,其特征在于:所述的步骤(4)对列表集合中剩余的节点按照CPU、内存、能耗进行升序排列,选择目标节点的步骤如下:
4-1、容器迁移时间计算公式如下:
其中,vi为迁移容器内存,bi为迁移容器的带宽;
4-2、目标节点能耗计算公式如下:
其中,u1(t)表示CPU的利用率;u2(t)表示GPU的利用率,pi(u1(t))表示CPU能耗函数,pj(u2(t))表示GPU能耗函数,E表示为目标节点能耗;
4-3、集群总能耗计算公式如下:
4-4、目标节点占集群能耗百分比计算公式如下:
4-5、按照CPU利用率、内存利用率、能耗百分比进行升序排列,满足CPU、内存总资源剩余较多且源节点耗能较少条件进行迁移,计算公式如下:
D=min(α×UCPU+β×Umem+η×Ucon) PMj∈Vj
if VM(C、R)<PMj(Cj、Rj)且α+β+η=1
其中,Vj表示物理机节点集合,VM表示待迁移容器,C、R分别表示待迁移容器的CPU、内存资源,PMj表示目标节点j,Cj、Rj表示目标节点j的可用CPU、内存资源。
CN201910624987.7A 2019-07-11 2019-07-11 一种基于能耗优化的容器动态迁移方法 Pending CN110308973A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910624987.7A CN110308973A (zh) 2019-07-11 2019-07-11 一种基于能耗优化的容器动态迁移方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910624987.7A CN110308973A (zh) 2019-07-11 2019-07-11 一种基于能耗优化的容器动态迁移方法

Publications (1)

Publication Number Publication Date
CN110308973A true CN110308973A (zh) 2019-10-08

Family

ID=68080078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910624987.7A Pending CN110308973A (zh) 2019-07-11 2019-07-11 一种基于能耗优化的容器动态迁移方法

Country Status (1)

Country Link
CN (1) CN110308973A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880939A (zh) * 2020-08-07 2020-11-03 曙光信息产业(北京)有限公司 容器动态迁移方法、装置及电子设备
CN115086335A (zh) * 2022-07-27 2022-09-20 北京思和科创软件有限公司 容器云的节点动态添加方法、装置、电子设备及存储介质
CN117170870A (zh) * 2023-09-05 2023-12-05 国网智能电网研究院有限公司 一种面向新能源消纳的数据中心算力的迁移方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970831A (zh) * 2017-05-15 2017-07-21 金航数码科技有限责任公司 一种面向云平台的虚拟机资源动态调度***及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970831A (zh) * 2017-05-15 2017-07-21 金航数码科技有限责任公司 一种面向云平台的虚拟机资源动态调度***及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李飞标 等: "基于能耗降低的虚拟机动态迁移算法", 《华东理工大学学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880939A (zh) * 2020-08-07 2020-11-03 曙光信息产业(北京)有限公司 容器动态迁移方法、装置及电子设备
CN115086335A (zh) * 2022-07-27 2022-09-20 北京思和科创软件有限公司 容器云的节点动态添加方法、装置、电子设备及存储介质
CN117170870A (zh) * 2023-09-05 2023-12-05 国网智能电网研究院有限公司 一种面向新能源消纳的数据中心算力的迁移方法及装置
CN117170870B (zh) * 2023-09-05 2024-04-26 国网智能电网研究院有限公司 一种面向新能源消纳的数据中心算力的迁移方法及装置

Similar Documents

Publication Publication Date Title
US20140082202A1 (en) Method and Apparatus for Integration of Virtual Cluster and Virtual Cluster System
US8972986B2 (en) Locality-aware resource allocation for cloud computing
CN102404412B (zh) 云计算数据中心节能方法及***
CN110308973A (zh) 一种基于能耗优化的容器动态迁移方法
WO2016078178A1 (zh) 一种虚拟cpu调度方法
CN103294548B (zh) 一种基于分布式文件***的io请求调度方法和***
US20130167152A1 (en) Multi-core-based computing apparatus having hierarchical scheduler and hierarchical scheduling method
CN103297499A (zh) 一种基于云平台的调度方法及***
Liu et al. Hierarchical copy algorithm for Xen live migration
CN102541467A (zh) 一种对象数据服务器读写请求的调度方法
CN108196935A (zh) 一种面向云计算的虚拟机节能迁移方法
CN104881322A (zh) 一种基于装箱模型的集群资源调度方法及装置
Tao et al. Load feedback-based resource scheduling and dynamic migration-based data locality for virtual hadoop clusters in openstack-based clouds
Li et al. An energy-aware scheduling algorithm for big data applications in Spark
CN110990154A (zh) 一种大数据应用优化方法、装置及存储介质
CN106656555A (zh) 一种云计算***的服务资源动态调节方法
CN108874508A (zh) 一种云计算虚拟服务器***负载均衡调度方法
CN109976879B (zh) 一种基于资源使用曲线互补的云计算虚拟机放置方法
CN108304253A (zh) 基于缓存感知和数据本地性的map任务调度方法
More et al. Energy-aware VM migration using dragonfly–crow optimization and support vector regression model in Cloud
CN103106112A (zh) 一种基于最高负载的进行负载均衡调度的方法及设备
CN107423114B (zh) 一种基于服务分类的虚拟机动态迁移方法
CN105930202B (zh) 一种三阈值的虚拟机迁移方法
CN108388471A (zh) 一种基于双门限约束虚机迁移的管理方法
CN110888713A (zh) 一种针对异构云数据中心的可信虚拟机迁移算法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20191008

RJ01 Rejection of invention patent application after publication