我目前正在浏览我的网络幻灯片,并想知道是否有人可以帮助我解决碎片和重组的问题.

我理解它是如何工作的,即数据报如何分成较小的块,因为网络链接具有MTU.然而,图中的例子令我感到困惑.
所以前两个部分显示长度为1500,因为这是MSU,但这不应该意味着最后一个应该有1000(总共4000个字节)而不是1040?这些额外的40个字节来自哪里?我的猜测是因为前两个片段都有一个20字节的标题,这个额外的40字节数据需要去某处,所以它会到达最后一个片段?
Fragflag本质上意味着存在另一个片段,因此除了最后一个将为零的片段之外,它们都将具有1的Fragflag.但是我不明白偏移是什么或如何计算.为什么第一个偏移量为零?为什么我们将数据字段(1480)中的字节除以8得到第二个偏移?这8个来自哪里?除此之外,我假设每个片段偏移量只会增加这个值?
例如,第一个片段的偏移量为0,第二个片段为185,第三个片段为375,第四个片段为555?(370 + 185)
谢谢你的帮助!
networking tcp defragmentation network-protocols fragmentation
这是一个"难"的问题.我在网上找不到任何有趣的东西.
我正在为我的公司开发一个内存管理模块.我们为下一代游戏机开发游戏(Xbox 360,PS3和PC ......我们认为PC是控制台!).
我们将来需要为我们的下一个游戏处理大型游戏世界的纹理流,这些游戏世界无法在主控制台内存中加载(暂时不谈论PC).
我们将在纹理的开始高分辨率mipmap(即大约世界数据大小的70%)上进行流式处理.也许在未来我们还必须流式传输几何图形,更小的mipmap,音频等.
我正在为这个问题开发一个内存管理器,专注于X360(因为在PS3上我们可以使用主机内存和相关的自动碎片整理GMM分配器).
我面临的问题如下:我们已决定为纹理流保留一个特定的内存区域(例如64兆字节),我们希望处理该区域中的所有分配和解除分配.我们在应用程序开始时分配了区域,并且该区域在物理上保证是连续的(不仅仅是虚拟,因为我们需要在那里存储纹理).
我已经实现了一个自动碎片整理分配器,使用句柄而不是指针.时间不是问题,问题是内存碎片化.在游戏中我们不断加载和卸载流媒体目标,因此我们希望使用最大量的缓冲区(64兆字节).
使用这个分配器,我们可以使用所有分配的空间,但碎片整理程序在不可接受的时间内工作(有时是60毫秒,超过一帧!),而算法也不算太糟糕......有太多不可避免的memcpy!
我正在寻找解决这个问题的解决方案.我想找到一份好文章,或验尸报告,或者遇到同样问题的人.
现在我在两种策略之间进行选择:1)在专用线程上移动碎片整理例程(适用于具有6个线程的线程的X360,对于PS3而言只有一个新线程...而且不要告诉我使用SPU!)解决锁定区域的所有多线程问题,访问正在移动的区域的问题,... 2)找到碎片整理问题的"增量"解决方案:我们可以为每个帧提供时间预算(例如最多1毫秒)进行碎片整理并且内存管理器将在每帧预算中执行它所能做的事情.
有人可以告诉我他的经历吗?
我想要OPTIMIZE所有目前分散的表格.这些表应该有information_schema.DATA_FREE > 0.
是否可以在SQL中的一个命令中使用此属性优化所有表,或者我是否必须编写外部代码才能执行此操作?
我试图通过libpcap嗅探HTTP数据,并在处理TCP有效负载后获取所有http内容(标头+有效负载).
根据我在编写一个http嗅探器(或任何其他应用程序级嗅探器)的讨论,我面临着由于碎片问题 - 我需要重建整个流(或对其进行碎片整理)以获得完整的HTTP数据包,这就是我的地方需要一些帮助.
在期待中感谢!!
我正在寻找一个自我碎片整理的内存管理器,其中一个简单的递增堆分配器与一个简单的压缩碎片整理程序结合使用.
粗略的方案是从最低内存地址开始向上分配块,并保持从最高内存地址开始向下工作的簿记信息.
内存管理器会传回智能指针 - boost的intrusive_ptr似乎对于簿记结构最为明显,这些结构本身会指向实际的内存块,从而提供一个间接级别,以便可以轻松地移动块.
碎片整理程序将从"生成"书签开始压缩堆,以加快进程并且一次只对固定数量的内存进行碎片整理.对块本身的原始指针在下一次碎片整理通过之前是有效的,因此可以自由传递直到这样的时间改善性能.
具体应用是控制台游戏编程,因此在每个帧的开始或结束时,可以相对安全地完成碎片整理传递.
所以我的问题是,任何人都使用这种分配方案与STL结合,它会让STL分开,因为我怀疑.我可以看到std :: list <intrusive_ptr>在intrusive_ptr级别工作,但是stl列表节点本身的分配是什么,无论如何都要覆盖next/prev指针为intrusive_ptr本身,或者我只需要有一个标准堆分配器旁边这个更动态的.
c++ heap memory-management defragmentation heap-fragmentation
我的Mercurial克隆变得异常缓慢,可能是由于盘上碎片造成的.有没有办法优化它?
制作新克隆的明显方法,然后将我的MQ,保存的包,hgrc等复制到新克隆并删除旧克隆.但似乎有人可能在此之前遇到过这个问题并做了扩展吗?
Windows中磁盘碎片整理和磁盘检查的逻辑是什么?我可以使用C#编码吗?
我目前正在开发一个C#(.NET 4.0)应用程序,该应用程序应该具有确定特定卷上碎片百分比的功能.所有其他功能都经过测试,工作正常,但我试图访问这些数据.我理想情况下更喜欢使用WMI,因为这与我用于其他功能的格式相匹配,但此时我愿意使用任何可以有效集成到应用程序中的内容,即使我必须使用RegEx来过滤数据.我目前正在Windows 7 Professional(x64)机器上进行开发.我使用管理员权限测试了以下Powershell代码段,它可以完美运行.
$drive = Get-WmiObject -Class Win32_Volume -Namespace root\CIMV2 -ComputerName . | Where-Object { $_.DriveLetter -eq 'D:' }
$drive.DefragAnalysis().DefragAnalysis
Run Code Online (Sandbox Code Playgroud)
这是我在C#中使用的方法来完成同样的事情,但InvokeMethod保持返回11(0xB).
public static Fragmentation GetVolumeFragmentationAnalysis(string drive)
{
//Fragmenation object initialization removed for simplicity
try
{
ConnectionOptions mgmtConnOptions = new ConnectionOptions { EnablePrivileges = true };
ManagementScope scope = new ManagementScope(new ManagementPath(string.Format(@"\\{0}\root\CIMV2", Environment.MachineName)), mgmtConnOptions);
ObjectQuery query = new ObjectQuery(string.Format(@"SELECT * FROM Win32_Volume WHERE Name = '{0}\\'", drive));
scope.Connect();
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
object[] outputArgs = new …Run Code Online (Sandbox Code Playgroud) 我已经看到了一些(字面上只有几个)链接,并且文档中没有涉及与Firebird集群的内容,它可以完成.
然后,我在Firebird的这个问题CLUSTER命令上为月亮射击了?但是,回答者告诉我,Firebird根本没有聚集索引,所以现在我真的很困惑.
Firebird是否实际上对数据进行排序?如果是这样,可以通过任何密钥订购,而不仅仅是主密钥,并且可以打开和关闭群集/碎片整理,以便它只在停机期间执行吗?
如果没有,这不是一个性能打击,因为它会花更长的时间把不同的行放在一起,这些行自然应该是彼此相邻的吗?
(DB noob)
MVCC
我发现Firebird是基于MVCC的,因此旧的数据实际上不会被覆盖,直到"扫描".我非常喜欢那个!
再说一遍,我找不到多少,但是根据一把钥匙对数据进行碎片整理似乎真的很遗憾.
这表示数据库页面已进行碎片整理,但未提供进一步说明.
我发现,我们如何解决在SQL Server这个问题在这里-但我怎么能做到这一点在PostgreSQL的?
defragmentation ×10
c# ×2
c++ ×2
optimization ×2
disk ×1
firebird ×1
heap ×1
http ×1
libpcap ×1
mercurial ×1
mvcc ×1
mysql ×1
networking ×1
performance ×1
postgresql ×1
powershell ×1
sniffer ×1
tcp ×1
windows ×1
wmi ×1
wql ×1