目录
1.程序功能形貌
2.测试软件版本以及运行结果展示
3.核心程序
4.本算法原理
5.完整程序
1.程序功能形貌
用matlab模拟,一个排队理论。输入一堆包,经过buffer(一个或者几个都行)传给server,这些包会在buffer里面进行排队,采取FIFO的排序方法。
本课题用到了一个公式
q(t)=max(0,q(t-1)+a(t)-1)
意思是现在在buffer里面排队的数据包的个数 是等于 前一时间排队的数据包的个数加上新到达的数据包的个数,减去脱离的也就是被处置惩罚的数据包的个数。值随时间变化。
在传输的过程中,要用Poisson Random Variable的公式生成随机的traffic。
最后输出的结果要求是q(t)的柱状图,重要结果是要比力最开始每个包之间的时间,和经过buffer还有traffic影响之后到达的每个包之间的时间差。
2.测试软件版本以及运行结果展示
MATLAB2022A版本运行
(完整程序运行后无水印)
3.核心程序
- %绘制每一个时刻下,FIFO中的数据包的数量q(t)的函数变化
- figure;
- subplot(211);
- bar(FIFO_DATA);
- grid on;
- legend('Q(t)整体显示效果');
- axis([1,10000,0,1.2*max(FIFO_DATA)]);
- title('显示某一次的仿真结果');
- subplot(212);
- bar(FIFO_DATA);
- grid on;
- legend('Q(t)局部显示效果');
- axis([4000,4050,0,1.2*max(FIFO_DATA(4000:4050))]);
- title('显示某一次的仿真结果');
- %比较最开始每个包之间的时间,和经过buffer还有traffic影响之后到达的每个包之间的时间差。
- figure
- plot(0:Num_FIFO_Package,[0 abs(Package_Infor(1,Package_Index)-Package_Infor(4,Package_Index))]);
- ylabel('The time');
- xlabel('The Package');
- legend('时间差');
- grid on;
-
- title('显示某一次的仿真结果');
- %显示整体的平均效果
- %显示整体的平均效果
- %首先计算平均值
- for i = 1:size(Package_Infor,1)
- for j = 1:size(Package_Infor,2)
- for m = 1:SIMU_NUM
- tmps1(i,j,m) = Package_Infor_Montecarlo{m}(i,j);
- end
- end
- end
- Package_Infor_Montecarlo_avg = zeros(size(Package_Infor,1),size(Package_Infor,2));
- for j = 1:size(Package_Infor,2)
- Package_Infor_Montecarlo_avg(1,j) = mean(tmps1(1,j,:));
- Package_Infor_Montecarlo_avg(2,j) = mean(tmps1(2,j,:));
- Package_Infor_Montecarlo_avg(3,j) = mean(tmps1(3,j,:));
- Package_Infor_Montecarlo_avg(4,j) = mean(tmps1(4,j,:));
- Package_Infor_Montecarlo_avg(5,j) = mean(tmps1(5,j,:));
- end
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- for i = 1:length(Package_Index)
- for m = 1:SIMU_NUM
- tmps2(i,m) = Package_Index_Montecarlo{m}(i);
- end
- end
- for i = 1:length(Package_Index)
- Package_Index_Montecarlo_avg(i) = mean(tmps2(i,:));
- end
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- for i = 1:length(FIFO_DATA)
- for m = 1:SIMU_NUM
- tmps3(i,m) = FIFO_DATA_Montecarlo{m}(i);
- end
- end
- for i = 1:length(FIFO_DATA)
- FIFO_DATA_Montecarlo_avg(i) = mean(tmps3(i,:));
- end
-
- figure
- subplot(121);
- plot([0 Package_Infor_Montecarlo_avg(1,Package_Index_Montecarlo_avg)],0:Num_FIFO_Package);
- hold on;
- plot([0 Package_Infor_Montecarlo_avg(4,Package_Index_Montecarlo_avg)],0:Num_FIFO_Package,'r-.');
- hold off;
- xlabel('The time');
- ylabel('The Package');
- legend('到达时间','离开时间');
- grid on;
- axis square;
- title('显示整体的平均效果');
- subplot(122);
- plot([0 Package_Infor_Montecarlo_avg(1,Package_Index_Montecarlo_avg)],0:Num_FIFO_Package);
- hold on;
- plot([0 Package_Infor_Montecarlo_avg(4,Package_Index_Montecarlo_avg)],0:Num_FIFO_Package,'r-.');
- hold off;
- axis([40,45,3500,4000]);
- xlabel('The time');
- ylabel('The Package');
- legend('到达时间(局部显示效果)','离开时间(局部显示效果)');
- grid on;
- axis square;
- title('显示整体的平均效果');
- figure;
- subplot(121);
- plot(1:Num_FIFO_Package,Package_Infor_Montecarlo_avg(3,Package_Index_Montecarlo_avg),'r-*');
- hold on;
- plot(1:Num_FIFO_Package,Package_Infor_Montecarlo_avg(2,Package_Index_Montecarlo_avg)+Package_Infor_Montecarlo_avg(3,Package_Index_Montecarlo_avg),'k-');
- hold off;
- legend('等待时间','处理所需要的时间');
- grid on;
- axis square;
- title('显示整体的平均效果');
- subplot(122);
- plot(1:Num_FIFO_Package,Package_Infor_Montecarlo_avg(3,Package_Index_Montecarlo_avg),'r-*');
- hold on;
- plot(1:Num_FIFO_Package,Package_Infor_Montecarlo_avg(2,Package_Index_Montecarlo_avg)+Package_Infor_Montecarlo_avg(3,Package_Index_Montecarlo_avg),'k-');
- hold off;
- axis([4000,4200,0,1.2*max(Package_Infor_Montecarlo_avg(3,4000:4200))]);
- legend('等待时间(局部显示效果)','处理所需要的时间(局部显示效果)');
- grid on;
- axis square;
- title('显示整体的平均效果');
- %绘制每一个时刻下,FIFO中的数据包的数量q(t)的函数变化
- figure;
- subplot(211);
- bar(FIFO_DATA_Montecarlo_avg);
- grid on;
- legend('Q(t)整体显示效果');
- axis([1,10000,0,1.2*max(FIFO_DATA_Montecarlo_avg)]);
- title('显示整体的平均效果');
- subplot(212);
- bar(FIFO_DATA_Montecarlo_avg);
- grid on;
- legend('Q(t)局部显示效果');
- axis([4000,4050,0,1.2*max(FIFO_DATA_Montecarlo_avg(4000:4050))]);
- title('显示整体的平均效果');
- %比较最开始每个包之间的时间,和经过buffer还有traffic影响之后到达的每个包之间的时间差。
- figure
- plot(0:Num_FIFO_Package,[0 abs(Package_Infor_Montecarlo_avg(1,Package_Index_Montecarlo_avg)-Package_Infor_Montecarlo_avg(4,Package_Index_Montecarlo_avg))]);
- ylabel('The time');
- xlabel('The Package');
- legend('时间差');
- grid on;
-
- title('显示某一次的仿真结果');
- 30_001m
复制代码 4.本算法原理
服务级别协议(Service Level Agreement, SLA)是云服务提供商与其客户之间告竣的一种正式协议,定义了服务质量的各种指标,如可用性、性能、支持等。此中,相应时间是指从用户发起请求到收到相应的时间隔断,它是衡量用户体验和系统性能的关键指标之一。在云盘算情况中,确保快速且同等的相应时间对于维持高质量的服务至关重要。
相应时间受多种因素影响,包括但不限于:
网络延迟:数据在网络中传输所需的时间。
处置惩罚时间:服务器处置惩罚请求所需的时间。
队列等待时间:假如存在多个并发请求,新请求可能需要排队等待。
资源利用率:CPU、内存等硬件资源的使用情况直接影响处置惩罚速度。
软件服从:应用程序的计划和实现也会影响其执行服从。
为了更准确地明白和猜测相应时间,可以采用一些数学模型来进行分析。这里介绍两种常用的模型:M/M/1排队模型和Little's Law。
M/M/1排队模型是一种经典的排队论模型,实用于形貌具有单个服务台且到达和服务过程均服从泊松分布的情况。假设以下参数:
Little's Law 是排队论中的一个根本定理,它提供了一个简朴但强大的工具来关联三个关键变量:L(系统中的平均请求数量)、λ(到达率)以及 W(每个请求在系统中的平均停顿时间)。其表达式为:
综上所述,云盘算SLA中的相应时间是一个涉及众多因素的综合性题目。通过对相干数学模型的研究与应用,不但可以帮助我们深入明白系统行为,还能引导实践操作以达到最优效果。随着技能进步及市场需求变化,将来还将有更多创新方法被提出以进一步提升云盘算服务质量。
5.完整程序
VVV
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |