FT2000+ 64K内存页系统chromium无法渲染问题

(两百五十六)学习perfetto(一) 学习https://www.bilibili.com/video/av77424850/ 竟然发现Google中国在哔哩哔哩也有账号,i了i了=-= trace分析对应的UI网址 https://ui.perfetto.dev/ 官网: https://perfetto.dev/ 1.简介 https://perfetto.dev/docs/ Perfetto is a production-grade open-source stack for performance ins.. 阅读详情

FT2000+ 64K内存页系统chromium无法渲染问题

64KB内存页为65536Byte,以2为底取对数为16。

修改PageAllocator.h,将kPageAllocationGranularityShift改为16,kSystemPageSize改为65536。

修改PartitionAlloc.h,将kPartitionPageShift改为18。以2为底取对数为16 + 2。

修改Heap.h,将blinkPageSizeLog2改为21。以2为底取对数为16 + 5。

手动修改

修改PageAllocator.h

#if OS(WIN)
static const size_t kPageAllocationGranularityShift = 16; // 64KB
#else
static const size_t kPageAllocationGranularityShift = 12; // 4KB
#endif
------------------------------------------------------------------------------------------
改为
#if OS(WIN)
static const size_t kPageAllocationGranularityShift = 16; // 64KB
#else
static const size_t kPageAllocationGranularityShift = 16; // 64KB
#endif

static const size_t kSystemPageSize = 4096;
------------------------------------------------------------------------------------------
改为
static const size_t kSystemPageSize = 65536;

修改PartitionAlloc.h

static const size_t kPartitionPageShift = 14; // 16KB
------------------------------------------------------------------------------------------
改为
static const size_t kPartitionPageShift = 18; // 64KB

修改Heap.h

使用find . -wholename "*heap/Heap.h"找到Heap.h

const size_t blinkPageSizeLog2 = 17;
------------------------------------------------------------------------------------------
改为
const size_t blinkPageSizeLog2 = 21;
const size_t maxHeapObjectSizeLog2 = 27;
------------------------------------------------------------------------------------------
改为
const size_t maxHeapObjectSizeLog2 = 31;
const size_t headerDOMMarkBitMask = 1u << 17;
const size_t headerGCInfoIndexShift = 18;
const size_t headerGCInfoIndexMask = (static_cast<size_t>((1 << 465) - 1)) << headerGCInfoIndexShift;
const size_t headerSizeMask = (static_cast<size_t>((1 << 14) - 1)) << 3;
const size_t headerMarkBitMask = 1;
const size_t headerFreedBitMask = 2;
------------------------------------------------------------------------------------------
改为
const size_t headerDOMMarkBitMask = 1u << 21;
const size_t headerGCInfoIndexShift = 22;
const size_t headerGCInfoIndexMask = (static_cast<size_t>((1 << 18) - 1)) << headerGCInfoIndexShift;
const size_t headerSizeMask = (static_cast<size_t>((1 << 18) - 1)) << 3;
const size_t headerMarkBitMask = 1;
const size_t headerFreedBitMask = 2;
const size_t nonLargeObjectPageSizeMax = 1 << 17;
------------------------------------------------------------------------------------------
改为
const size_t nonLargeObjectPageSizeMax = 1 << 21;

使用脚本修改

在源码目录下创建脚本,内容如下,并执行脚本,编译代码即可

#!/bin/bash
pagesize=`getconf PAGESIZE`
echo $pagesize
pagesizelog2=`echo $pagesize | awk '{ print(log($0)/log(2))}'`

PartitionAlloc_h=`find . -name "PartitionAlloc.h"`
echo $PartitionAlloc_h
sed -i "s/^static const size_t kPartitionPageShift .*/static const size_t kPartitionPageShift = `expr $pagesizelog2 + 2`;/" $PartitionAlloc_h

PageAlloctor_h=`find . -name "PageAllocator.h"`
echo $PageAlloctor_h
sed -i "s/^static const size_t kPageAllocationGranularityShift .*/static const size_t kPageAllocationGranularityShift = $pagesizelog2;/" $PageAlloctor_h
sed -i "s/^static const size_t kSystemPageSize .*/static const size_t kSystemPageSize = $pagesize;/" $PageAlloctor_h

Heap_h=`find . -wholename "*heap/Heap.h"`
echo $Heap_h
sed -i "s/^const size_t blinkPageSizeLog2 .*/const size_t blinkPageSizeLog2 = `expr $pagesizelog2 + 5`;/" $Heap_h
sed -i "s/^const size_t maxHeapObjectSizeLog2 .*/const size_t maxHeapObjectSizeLog2 = `expr $pagesizelog2 + 15`;/" $Heap_h

sed -i "s/^const size_t headerDOMMarkBitMask .*/const size_t headerDOMMarkBitMask = 1u << `expr $pagesizelog2 + 5`;/" $Heap_h
sed -i "s/^const size_t headerGCInfoIndexShift .*/const size_t headerGCInfoIndexShift = `expr $pagesizelog2 + 6`;/" $Heap_h

sed -i "s/^const size_t headerGCInfoIndexMask = .*/const size_t headerGCInfoIndexMask = (static_cast<size_t>((1 << `expr $pagesizelog2 + 2`) - 1)) << headerGCInfoIndexShift;/" $Heap_h

sed -i "s/^const size_t headerSizeMask .*/const size_t headerSizeMask = (static_cast<size_t>((1 << `expr $pagesizelog2 + 2`) - 1)) << 3;/" $Heap_h

sed -i "s/^const size_t nonLargeObjectPageSizeMax .*/const size_t nonLargeObjectPageSizeMax = 1 << `expr $pagesizelog2 + 5`;/" $Heap_h
FT2000盒子运行ubuntu20.04系统 飞腾FT2000/4平滑运行Ubuntu20.04系统 阅读详情

相关推荐

Electron常见问题 40 - 源码编译问题集合

1. version=19.16 -std=c++14 -finline-functions -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -mllvm -instcombine-lower-dbg-declare=0 -fdebug-compilation-dir . -add-plugin find-bad-constructs -add-plugin

liuzhen007的专栏 1810

麒麟高级服务器修改内存页PAGESIZE

14)awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/kylin/grub.cfg #查看所有内核。4) cp /boot/config-4.19.90-23.8.v2101.ky10. ./.config #将系统内核原来配置复制到新解压。15)grub2-set-default "......" #设置默认启动内核版本。13)grub2-editenv list #查看当前默认启动内核版本。7)修改为4K保存退出。

yuchen008的博客 4272

DEMO作品欣赏(64kb视频)

DEMO大赛 DEMO作品欣赏 里边有多个个DEMO作品 广为人知的幽灵古堡、第七天堂、爱之记忆、火域幻境、死亡阴影、等许多优秀作品。

内存页大小

操作系统以内存页为单位管理内存,内存页的大小对系统性能有影响。内存页设得太小,内存页会很多,管理内存页的数组会比较大,耗内存,同时TLB大小是固定的,导致TLB MISS增加。所谓TLB就是把虚拟内存页面与物理内存页面的转换结果存起来,不用每次都用MMU作转换。内存页设大了,因为一个进程拥有的内存是内存页大小的整数倍,会导致碎片,即申请了很多内存,真正用到的只有一点。如果考虑SWAP分区(即把硬盘

lishenglong666的专栏 5423

微信群消息监控系统实战:从零搭建Python自动化监控平台

本文详细介绍了如何从零搭建Python微信群消息监控系统,实现自动化监控和记录群消息。通过wxauto库模拟人工操作微信,结合MySQL数据库存储和智能去重策略,系统能高效处理大量消息并支持关键词监控。文章还分享了性能优化、安全合规等实战经验,帮助开发者快速构建高效稳定的监控平台。

weixin_29091105的博客 320

笔记本电脑更换主板后出现2203:System configuration is invalid,以及2201、2202系统错误的解决

主板更换后刷新S/N

晓夏IT笔记 3519

首个支持苹果M1的Linux发行版来啦!

????????关注后回复“进群”,拉你进程序员交流群????????文| 白开水出品 | OSC开源社区(ID:oschina2013)Asahi Linux 宣布推出首个公开 Alpha 版本,“请记住,这仍然是一个非常早期的 alpha 版本。它适用于开发人员和高级用户;如果你决定安装它,我们希望你能够通过提交详细的错误报告和帮助调试问题来帮助我们。也就是说,我们欢迎大家试一试 - ...

iOS_开发 896

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

什么时候勾选Bake into pose,当不希望动画带动游戏对象旋转时。在旋转的动画中一般是不用勾选的,因为就需要用它来带动我们的角色对象旋转。但在比如前进、后退、待机等动画来说,我们就可以勾选这里,以避免因动画文件本身的瑕疵而给我们带来的旋转。loop match:代表了这个动画在角度上的吻合度。如果这个动画在播放中转角过大,那么就会显示红色,告诉我们如果勾选bake into pose,则会带来不好的效果。

weixin_60154963的博客 6805

银河麒麟(linux arm64)安装新版谷歌浏览器

银河麒麟(linux arm64)安装谷歌浏览器

suckshit的博客 7万+

从MC到DC:三维重建算法的核心原理与实战对比

本文深入对比了三维重建领域两大经典算法Marching Cubes(MC)与Dual Contouring(DC)的核心原理与实战表现。MC算法原理直观、实现简单,但存在特征丢失和二义性问题;DC算法通过求解二次误差函数(QEF)和利用法向量信息,能更好地保留模型的尖锐特征,但计算更复杂。文章结合医学影像处理实例,为开发者根据速度、精度和特征保真度需求选择合适算法提供了清晰指南。

weixin_29251131的博客 1033

ROS2入门到精通—— 2-9 ROS2实战:Nav2常见的工程问题(参考3D视觉工坊)

本文介绍了Nav2常见的工程问题,还有调试DWB的一些经验,以及DWB的一些缺点

BigDavid123的博客 1068

Chromium源码阅读(8):了解Base库里的PartitionAlloc模块

malloc符号定义这个阶段负责覆盖mallocfree等符号,并将这些调用路由到分配器shim内部。这由中的头文件处理。在Windows上:Windows的UCRT(通用C运行时)导出了弱符号,我们可以在中覆盖它们。在Linux/CrOS上:分配器符号作为导出的全局符号在(对于mallocfree等)和(对于等)中定义。这使malloc符号在主可执行文件和任何第三方库中得到适当的拦截。在Android上:与Linux/CrOS的情况不同,加载时的符号拦截是不可能的。

hebhljdx的博客 2085

骑砍Ⅱ霸主MOD开发(5)-2D界面

本文介绍了2D界面开发的技术框架,主要包括以下内容: 2D界面架构:由多个GauntletLayer(菜单/对话框/定制页面)和SceneLayer(3D页面)组成,支持屏幕切换和管理。 GauntletLayer实现:采用Movie(HTML页面)+ViewModel(动态数据)模式,支持优先级管理、焦点控制和事件响应。 2D控件系统:包括颜色字体、坐标布局、背景图(Sprite/Texture)等配置方式,支持自定义控件开发。 定制化页面开发:详细说明了游戏菜单和对话框的实现方法,包括状态管理、事件回调

骑砍战团&霸主MOD开发 1183

chrome/chromium 上的内存管理模块-allocator介绍

本文介绍chromium在不同平台上 malloc/new 是如何封装调用的。 从代码中很容易发现,chromium的基础代码并不是仅仅使用“malloc”来分配内存 例如:         renderer(Blink)大部分都是用chromium单独设计的PartitionAlloc和BlinkGC(Oilpan)         像javascript引擎V8这样比较独立的子系统使用自己的...

鸿儒客栈 4532

arkts编译报错-arkts-limited-stdlib错误【Bug已完美解决-鸿蒙开发】

在使用 Deveco Studio 4.0 beta2 开发应用时,报错。ERROR: ArkTS:ERROR File: D:/prRevivw/3792/applications_appsamg优快云o”见台难忘Usage of standardlibrary is restricted (arkts-limited-stdlib)这是 ArkTS 新增的语法规则。

一键难忘的博客 3778

B07:AI 时代怎么考核团队?我把 KPI 改了 5 版才找到答案

最后说一句掏心窝的话。绩效考核不是"管人"的工具,是"引导团队行为"的工具。你定什么指标,团队就会做什么行为。你定"AI 占比",团队就凑占比你定"效率提升",团队就挑软柿子你定"代码行数",团队就刷行数你定"工具使用率",团队就刷使用只有定"业务价值 + 工程质量 + 能力成长"三个维度的指标,团队才会真正关注长期价值。这套 KPI,我在我带的团队里跑了 6 个月,没有任何一个指标被"刷"出来。考核的是结果,不是过程。永远考核"创造了多少价值",永远不考核"用了多少 AI"。

刘一说的IT专栏 502

Page Size

看好多论文和源码中都有Page Size的概念,我却一直比较模糊,今天特地仔细查了一下。基本概念 Traditionally, pages in a system had uniform size, for example 4096 bytes.一般来说,系统中页的大小是规定好的,比如说4096B,也即4KB页的内部分段When transferring from disk, much of the delay is caused by seek time, the time it takes to cor

小GIS的成长日记 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

修改服务器内存页PAGESIZE为4k(默认为64K)

14)awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/kylin/grub.cfg #查看所有内核。4) cp /boot/config-4.19.90-17.ky10.aarch64 ./.config #将系统内核原来配置复制到新解压的内核。1)下载内核https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.230.tar.xz。7)修改为4K保存退出。

顺其自然~专栏 634

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

「SequoiaDB巨杉数据库」alter()

名称 alter - 修改集合空间的属性。 语法 db.collectionspace.alter(<options>) 类别 Collection Space 描述 修改集合空间的属性。 请参考db.collectionspace.setAttributes() 参数 options(Object,必填) 通过options参数可以修改集合空间属性: PageSize(Int32):数据页大小。单位为字节。 PageSize 只能选填...

lysen_的博客 218

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

kernel支持4k/16k/64k pagesize

在从arm64-stub.c 中会进行pagesize的check,从arm64 spec来看,arm64主要支持4k/16/64 这三种pagesize efi_status_t check_platform_features(efi_system_table_t *sys_table_arg) {     u64 tg;     /* UEFI mandates support f

jason的笔记 6327

银河麒麟v10更新异常问题

sudo apt-get update 后如下图: 此时并未全自动升级安装,需要剩下组件手动安装; sudo apt-get install engrampa sudo apt-get install gparted sudo apt-get install network-manager-gnome simple-sca sudo apt-get install kylin-control-center kylin-firefox-flash-plugins sudo apt-get in...

yanchenyu365的博客 8498

内核启动参数之——内核无法启动

为了调试文件系统,准备采用NFS 根文件系统方式启动,使用了下面的参数:   setenv bootargs root=/dev/nfs console=ttyS0,115200 nfsroot=192.168.1.138:/home/chenxibing/lpc3250/ecm1352/rootfs  ip=192.168.1.136:192.168.1.1:192.168.1.1:255....

weixin_34009794的博客 195

SequoiaDB巨杉数据库-alter()概述2

参数 options(Object,必填) 通过options参数可以修改集合空间属性: PageSize(Int32):数据页大小。单位为字节。 PageSize 只能选填 0,4096,8192,16384,32768,65536 之一。 PageSize 为 0 时,即默认值 65536。 修改时不能有数据 格式:PageSize : <num> LobPageSize(Int32):LOB 数据页大小。单位为字...

weixin_48909806的博客 176

安装Altium Designer失败

出现package “base_core_static” is corrupted之类的错误,并提示有可能是杀毒软件未关闭所导致。 一般情况下,如果只保留windows自带的杀毒,仍然提示此问题。 就真的是安装包坏了。毕竟,系统提示的是corrupted。 解决方法:重新下载安装镜像,尽量不要下载后剪切移动。 ...

为己无止境 3148

为什么linux kernel默认的页面大小是4K,而不是4M或8M?

相信很多人在看内核内存管理部分的时候,都有这样一个疑问,为什么物理页面的大小选择4K,而不是大一些或者小一些呢? 这个问题没有固定的答案,仁者见仁智者见智,每个人的关注点不一样。所以这篇文章不是说给出一个固定的答案,更多的只是一篇讨论性的文章。 内核的页面大小首先跟CPU有关,不同的架构支持的页面大小也不相同,但有一个共同点,那就是肯定支持4K的页面大小。为什么处理器在设计的时候会选择4K,而

Justlinux2010的专栏 1万+
上一篇: 实时核多线程性能低问题分析
下一篇: 创建进程到极限,资源不足
elimuzi
博客等级 码龄10年 56粉丝 113原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值