ApexCharts - 开源的现代 JavaScript 图表库
ApexCharts 是一个开源的现代 JavaScript 图表库,用于在网页和应用程序中创建交互式、响应式图表。它的设计目的是使数据可视化变得简单且高效,适用于与 React、Vue 和 Angular 等框架的集成。以下是 ApexCharts 的详细介绍:
主要特性
1. 多种图表类型:
* 支持多种图表类型,包括折线图、柱状图、饼图、散点图、区域图、雷达图、热力图等。
2. 响应式设计:
* 图表在不同设备上自适应,确保在手机、平板和桌面设备上都有良好的显示效果。
3. 交互功能:
* 提供丰富的交互功能,如缩放、悬停提示、图例切换、数据筛选等,增强用户体验。
4. 主题和样式:
* 支持主题自定义,可以通过 CSS 和 JavaScript 轻松定制图表的外观。
5. 动画效果:
* 图表在更新和交互时提供平滑的动画效果,使数据变化更具可视性。
6. 丰富的配置选项:
* 提供大量的配置选项,让开发者能够细致地控制图表的各个方面,如颜色、边框、标签等。
7. 轻量级:
* ApexCharts 的核心库相对较小,有助于提升网页的加载速度。
8. 数据格式支持:
* 支持多种数据格式,如 JSON、数组等,便于与后端数据交互。
安装和使用
安装:
可以通过 npm 或 yarn 安装:
npm install apexcharts
# 或者
yarn add apexcharts
基本用法:
创建一个简单的折线图示例:
<div id="chart"></div>
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<script>
var options = {
chart: {
type: 'line',
},
series: [{
name: '销量',
data: [10, 20, 30, 40, 50]
}],
xaxis: {
categories: ['一月', '二月', '三月', '四月', '五月']
}
};
var chart = new ApexCharts(document.querySelector("#chart"), options);
chart.render();
</script>
可以通过 npm 或 yarn 安装:
npm install apexcharts
# 或者
yarn add apexcharts
参考文档和资源
* 官方网站:ApexCharts
* 文档:ApexCharts Documentation
* 示例:ApexCharts Examples
适用场景
ApexCharts 非常适合需要进行数据可视化的项目,如数据仪表板、报告生成、实时数据监控等。它的灵活性和易用性使得开发者能够快速构建各种图表,而无需深入了解复杂的图形绘制技术。
Strapi - 开源头部内容管理系统(CMS)
Strapi 是一个流行的开源头部内容管理系统(CMS),旨在帮助开发者和企业构建灵活、可扩展的内容驱动型应用程序。它使用 JavaScript 和 Node.js 构建,提供了一种直观的方式来管理和发布内容,使得开发人员可以更专注于前端开发和用户体验。
主要特点
1. 无头架构:
Strapi 采用无头 CMS 的架构,这意味着内容存储在后台,可以通过 RESTful API 或 GraphQL API 在前端以任何方式呈现。这种灵活性允许开发者使用任何前端框架(如 React、Vue、Angular 等)来构建用户界面。
2. 自定义内容模型:
用户可以根据具体需求自定义内容类型和字段。Strapi 的内容类型构建器提供了一种可视化的方式来创建和管理这些模型,支持文本、图片、日期等多种字段类型。
3. 插件生态系统:
Strapi 拥有丰富的插件生态系统,用户可以通过安装插件来扩展其功能。例如,用户可以添加认证、社交媒体集成、搜索引擎优化(SEO)等功能。
4. 强大的管理界面:
Strapi 提供了一个直观的管理界面,用户可以在其中轻松管理内容、用户权限和应用设置。这个界面支持多语言,方便全球开发者使用。
5. 社区支持和文档:
Strapi 拥有一个活跃的开发者社区,用户可以在其 GitHub 页面和论坛上获取支持。官方文档详细,涵盖了安装、配置、开发和最佳实践。
使用方法
1. 创建内容类型:
通过管理界面,用户可以创建内容类型和字段,设置内容的结构。
2. 管理内容:
用户可以在管理界面中添加、编辑和删除内容,同时也可以设置用户权限,以控制谁可以访问和管理内容。
3. API 访问:
一旦内容设置完成,用户可以通过 API 访问内容。可以使用 RESTful 或 GraphQL 请求来获取、创建或更新内容。
安装:
用户可以通过 npm 或 yarn 轻松安装 Strapi。例如:
npx create-strapi-app my-project --quickstart
这个命令会创建一个新的 Strapi 项目,并启动一个开发服务器。
总结
Strapi 是一个强大且灵活的头部 CMS,适合需要快速构建和管理内容驱动型应用程序的开发者和团队。其无头架构、自定义内容模型、插件生态系统以及易于使用的管理界面,使得它在现代 web 开发中广受欢迎。对于希望构建动态和响应式应用的开发者来说,Strapi 是一个值得考虑的选择。
更多信息和详细文档可以访问 Strapi 官网。
Actual - 管理个人信息、任务和项目
Actual 是一个强大的开源应用程序,主要用于帮助用户管理个人信息、任务和项目。它结合了任务管理、时间跟踪和数据可视化等功能,旨在提高用户的生产力和组织能力。以下是对 Actual 的详细介绍,包括其主要特点、功能和使用方法。
主要特点
1. 任务管理:
Actual 提供了一个直观的任务管理系统,用户可以轻松创建、编辑和组织任务。任务可以分为不同的类别,支持优先级设置和截止日期提醒,帮助用户更有效地管理日程。
2. 时间跟踪:
用户可以使用 Actual 来跟踪时间,记录每个任务的耗时。这对于需要时间管理的项目或工作非常有帮助,用户可以分析哪些任务花费了最多时间,以便进行调整和优化。
3. 数据可视化:
Actual 提供了多种数据可视化选项,用户可以通过图表和报表查看自己的进展和效率。这有助于用户直观地了解自己的工作状态,并根据数据做出决策。
4. 开源与社区:
作为一个开源项目,Actual 鼓励用户参与到项目中来。开发者可以根据自己的需求对其进行定制和扩展,社区也提供了丰富的文档和支持。
5. 跨平台支持:
Actual 可以在多个操作系统上运行,包括 Windows、macOS 和 Linux。这使得用户可以在不同的设备上使用相同的工具,提高了灵活性。
使用方法
1. 安装:
用户可以从 Actual 的 GitHub 仓库 下载最新版本,并按照说明进行安装。
2. 创建任务:
启动应用后,用户可以通过简单的界面创建新任务,设置优先级和截止日期。
3. 时间记录:
在完成任务时,用户可以启动时间跟踪功能,记录花费在每个任务上的时间。
4. 数据分析:
用户可以通过内置的报表和图表查看任务完成情况,了解工作效率和时间分配。
社区与支持
Actual 拥有活跃的开源社区,用户可以在 GitHub 上提出问题、提交功能请求或贡献代码。项目文档详细,涵盖了安装、使用和开发的各个方面,帮助用户更好地上手。
总结
Actual 是一个功能强大且灵活的个人信息管理工具,适合希望提高工作效率和组织能力的用户。通过其任务管理、时间跟踪和数据可视化功能,用户可以全面掌握自己的工作状态,进行更好的规划和决策。由于它是开源的,用户还可以根据自己的需求进行定制,使其更加贴合个人或团队的工作流程。
更多信息可以访问 Actual 的 GitHub 页面。
Tuya-Local
Tuya-Local 是一个用于与 Tuya 设备进行本地通信的开源库,它可以绕过 Tuya 的云平台,直接通过局域网与支持 Tuya 的智能家居设备进行交互。这使得用户能够在本地网络中控制设备,降低延迟,并提高隐私性,因为不再需要通过云服务器进行数据传输。
主要特点
1. 本地控制:
Tuya-Local 允许用户在不依赖 Tuya 云服务的情况下控制智能设备,提供更快的响应时间和更稳定的连接。
2. 支持多种设备:
它支持多种 Tuya 设备,包括智能插座、灯具、开关、传感器等。用户可以通过这个库轻松实现对这些设备的控制。
3. 易于集成:
Tuya-Local 可以与 Home Assistant 等智能家居平台集成,使用户能够在这些平台中管理 Tuya 设备。此外,由于其开源特性,开发者可以根据需要对其进行修改和扩展。
4. 多语言支持:
该库支持 JavaScript、Python 等多种编程语言,方便不同开发者的使用。
5. 功能丰富:
Tuya-Local 支持设备状态查询、控制设备开关、调整亮度、设置定时任务等多种功能,能够满足用户的多样化需求。
安装与使用
使用示例:
一旦安装,可以使用以下代码连接和控制 Tuya 设备:
const TuyaLocal = require('tuya-local');
const device = new TuyaLocal({
ip: '192.168.1.100', // 设备的 IP 地址
id: '你的设备 ID',
key: '你的设备密钥',
});
device.get()
.then((data) => {
console.log('设备状态:', data);
})
.catch((err) => {
console.error('发生错误:', err);
});
安装:
Tuya-Local 可以通过 npm(对于 JavaScript)或 pip(对于 Python)进行安装。例如,对于 JavaScript 用户,可以使用以下命令:
npm install tuya-local
社区与支持
Tuya-Local 在 GitHub 上拥有活跃的社区,用户可以通过仓库提问、报告问题或贡献代码。社区也提供了文档和示例,帮助用户更好地使用这个库。
* GitHub 仓库:Tuya-Local
总结
Tuya-Local 是一个强大的工具,可以帮助用户实现对 Tuya 设备的本地控制,减少对云服务的依赖。它的开源特性使得用户能够根据自己的需求进行修改和扩展,适合智能家居开发者和爱好者使用。通过支持多种编程语言,Tuya-Local 为用户提供了灵活的集成方案,增强了智能家居的使用体验。
H5-Dooring - H5 页面编辑器
H5-Dooring 是一个开源的、功能强大的 H5 页面编辑器,旨在帮助用户通过可视化拖拽的方式,快速生成高质量的 H5 页面。它提供了丰富的组件库和灵活的插件机制,适合开发营销页面、互动小游戏、活动推广等场景,广泛应用于广告、营销、活动运营等领域。
主要特点
1. 可视化拖拽编辑:
H5-Dooring 的核心是一个拖拽式的编辑器,用户可以通过鼠标拖拽不同的 UI 组件来搭建页面。无需编写复杂的代码,即可快速生成精美的 H5 页面。
2. 丰富的组件库:
H5-Dooring 内置了多种常用的 UI 组件,包括文本、图片、按钮、视频、轮播图等,可以满足大多数页面构建需求。用户可以自由调整组件的属性,如尺寸、颜色、字体等,以实现个性化设计。
3. 插件机制:
H5-Dooring 提供了灵活的插件机制,开发者可以根据需要编写自定义插件,扩展编辑器的功能。插件可以是新的 UI 组件,也可以是特殊的功能模块,如动画效果或表单处理。
4. 页面预览与导出:
用户可以在编辑过程中实时预览 H5 页面效果,确保设计符合预期。完成后,页面可以导出为 HTML 文件,并直接部署到线上,快速上线应用。
5. 代码层定制:
对于有代码经验的用户,H5-Dooring 也提供了编写自定义代码的选项。你可以在现有组件的基础上进行二次开发,添加复杂的交互逻辑或与后端系统的集成。
6. 响应式设计:
H5-Dooring 支持响应式布局,确保生成的页面能够在不同尺寸的设备(如手机、平板、电脑)上正常显示。
7. 开源与二次开发:
H5-Dooring 是完全开源的,用户可以自由下载源代码并进行二次开发,满足企业个性化需求。它的模块化设计使得用户可以方便地扩展和定制。
使用场景
1. 企业营销活动:
用于快速创建互动性强、视觉效果吸引人的活动页面,例如抽奖页面、打卡签到页面、优惠券发放页面等。
2. 品牌宣传:
帮助企业创建独特的品牌推广页面,展示产品或服务,并与用户进行实时互动,提升品牌认知度。
3. 移动端游戏:
通过集成 H5 游戏开发框架,可以制作轻量级的 H5 游戏,增加用户参与感。
4. 在线问卷和表单:
可以用来设计调查问卷、用户反馈表单、报名页面等,并与后端系统集成,收集用户数据。
使用方法
1. 编辑页面:
启动项目后,用户可以通过浏览器访问编辑器界面,选择不同的组件拖放到画布上,实时调整页面布局和样式。
2. 页面导出:
编辑完成后,用户可以将页面导出为 HTML 文件,并部署到任意服务器上,也可以直接集成到已有的项目中。
安装与部署:
H5-Dooring 可以通过 GitHub 仓库下载代码并自行部署,或者使用已经搭建好的在线服务进行编辑。部署步骤大致如下:
git clone https://github.com/MrXujiang/h5-Dooring.git
cd h5-Dooring
npm install
npm start
社区与支持
H5-Dooring 拥有活跃的开源社区,开发者可以通过 GitHub 提出问题、提交功能请求或贡献代码。社区也为新手用户提供了详尽的文档和教程,帮助快速上手使用编辑器。
* GitHub 仓库:H5-Dooring
总结
H5-Dooring 是一个功能强大的 H5 页面编辑器,适合个人开发者和企业快速构建具有高互动性和视觉吸引力的 H5 页面。它的拖拽式操作、丰富的组件库以及可扩展的插件机制,使得用户能够在无需编写大量代码的情况下,快速创建符合业务需求的网页。
ToolJet - 开源的低代码应用程序构建平台
ToolJet 是一个开源的低代码应用程序构建平台,帮助开发者和企业轻松构建内部工具和业务应用。它的设计目标是简化 Web 应用的开发流程,使用户可以通过拖拽组件和简单的配置来构建复杂的应用程序,而无需深入编写代码。以下是 ToolJet 的详细介绍:
主要特点
1. 低代码平台:
ToolJet 是一个典型的低代码平台,允许用户通过图形化界面构建应用。用户可以拖放各种 UI 组件,如表单、图表、按钮等,来创建复杂的应用。这种方式大大减少了开发时间,并且降低了开发门槛。
2. 多种数据源支持:
ToolJet 支持与多种外部数据源集成,包括数据库(如 PostgreSQL、MySQL、MongoDB 等)、REST API、GraphQL,以及第三方工具(如 Airtable、Google Sheets、Slack 等)。这使得用户可以轻松构建与外部系统进行交互的应用程序。
3. 可视化编辑器:
ToolJet 的核心是其可视化编辑器,用户可以在其中拖放不同的 UI 组件,调整布局和样式,设置组件与数据源的交互逻辑。所有这些操作都不需要编写代码,极大简化了开发流程。
4. 自定义代码支持:
尽管 ToolJet 是一个低代码平台,但它同样允许开发者编写自定义代码。如果需要实现更复杂的功能或业务逻辑,用户可以通过 JavaScript 编写自定义代码,并将其与应用的 UI 和数据进行集成。
5. 权限管理:
ToolJet 提供了强大的权限管理系统,适合企业内部工具的开发。管理员可以为不同的用户组配置不同的权限,确保只有合适的用户能够访问和修改应用中的数据和功能。
6. 自动化工作流:
用户可以通过 ToolJet 构建自动化工作流。例如,当一个表单提交时,可以自动执行一系列操作,如将数据保存到数据库、触发其他 API 请求,或通过第三方服务发送通知。
7. 响应式设计:
ToolJet 构建的应用程序支持响应式设计,这意味着应用能够在各种设备(如桌面、平板和手机)上流畅运行,无需额外的适配工作。
8. 部署和扩展:
ToolJet 提供了本地化部署和云端部署选项。用户可以根据自己的需求选择在自有服务器上部署,或使用 ToolJet 提供的云服务。此外,ToolJet 通过插件系统支持功能扩展,用户可以根据需要开发和集成自定义插件。
使用场景
1. 内部工具开发:
ToolJet 特别适合企业开发内部工具,如客户管理系统(CRM)、数据仪表盘、库存管理系统等。通过与数据库和 API 的集成,用户可以轻松构建实用的业务应用。
2. 快速原型设计:
通过 ToolJet 的低代码特性,开发者可以快速构建应用原型,并与团队分享。这在产品开发的早期阶段非常有帮助,有助于更快地验证业务需求。
3. 数据可视化:
ToolJet 提供了丰富的数据展示组件,如图表、表格等,用户可以轻松地将数据源中的数据以可视化的方式展示出来,适合构建数据仪表盘和报告系统。
如何使用
1. 安装:
* SaaS 服务:用户可以直接在 ToolJet 官方网站注册账户并使用在线版本。
2. 创建应用:
* 登录 ToolJet 后,用户可以通过拖拽 UI 组件到画布上来设计应用界面。
* 配置数据源并定义与 UI 组件的交互逻辑。例如,可以将表单提交的数据保存到数据库,或从 API 获取数据并展示在表格中。
3. 扩展功能:
如果需要自定义功能,可以在 ToolJet 中编写 JavaScript 代码或创建自定义插件,扩展平台的原有功能。
自托管:ToolJet 提供了自托管选项,用户可以在自己的服务器上通过 Docker 安装 ToolJet,保证数据的安全性和可控性。
git clone https://github.com/ToolJet/ToolJet.git
cd ToolJet
docker-compose up
开源与社区
ToolJet 是完全开源的,用户可以访问其 GitHub 仓库 进行二次开发或提出改进建议。ToolJet 社区活跃,开发者和用户可以在社区中交流使用经验、分享插件以及帮助其他用户解决问题。
总结
ToolJet 是一个功能强大、灵活的低代码开发平台,适合快速构建业务应用和内部工具。通过支持多种数据源集成、强大的权限管理和自动化功能,它能够满足企业对应用程序快速开发、部署和扩展的需求。同时,作为一个开源项目,它允许用户根据自己的需求进行定制和扩展,具有极高的灵活性。
更多信息可以访问 ToolJet 官方网站 【6†source】。
transformers.js - 在浏览器中处理自然语言任务
transformers.js 是 Hugging Face 提供的 JavaScript 库,它允许在浏览器和 Node.js 环境中使用 Transformer 模型来处理自然语言任务。这个库主要面向前端开发人员,旨在无需后端服务器即可执行强大的 NLP 任务,例如文本生成、情感分析、翻译等。
主要特点
1. 浏览器和 Node.js 支持:能够在浏览器环境中使用,通过 CDN 或 npm 安装,适合各种应用场景【33†source】。
2. 内置模型支持:支持 Hugging Face Hub 中的各种预训练模型,涵盖翻译、文本生成、分类等任务【32†source】。
3. Web Workers 支持:通过 Web Workers 进行模型的下载和执行,避免阻塞主线程,提高用户体验【33†source】。
使用方法
1. 安装方式
2.
3. 基本用法
transformers.js 使用非常简单,可以通过调用 pipeline 函数创建一个任务处理管道。以下是一些基础用法:
4.
5. 高级用法
* 使用自定义的回调函数:可以通过 callback_function 自定义模型的输出处理逻辑。
模型缓存:允许在客户端缓存模型,避免每次使用时重新下载。设置 allowLocalModels 为 true。
import { env } from '@xenova/transformers';
env.allowLocalModels = true;
异步处理与 Web Worker
为了处理大型模型并避免阻塞 UI,transformers.js 支持 Web Workers,确保模型下载和处理任务在后台进行。例如:
const worker = new Worker('path/to/worker.js', { type: 'module' });
worker.postMessage({ action: 'download', model: 'bert-base-uncased' });
worker.onmessage = (event) => {
if (event.data.status === 'ready') {
console.log('Model is ready!');
}
};
情感分析:
const sentiment = await pipeline('sentiment-analysis');
const result = await sentiment('I love this!');
console.log(result);
翻译:
const translator = await pipeline('translation', 'Helsinki-NLP/opus-mt-en-de');
const output = await translator('How are you?');
console.log(output); // "Wie geht's dir?"
文本生成:
import { pipeline } from '@xenova/transformers';
const generator = await pipeline('text-generation', 'gpt2');
const output = await generator('The quick brown fox');
console.log(output);
通过 npm:适用于 Node.js 和模块化的前端项目。
npm install @xenova/transformers
通过 CDN:直接在 HTML 文件中引入。
<script type="module">
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers';
</script>
典型应用场景
* 网页翻译工具:使用模型实现实时翻译。
* 文本自动生成:生成长文本段落或文章。
* 情感分析工具:分析用户评论或社交媒体上的反馈。
优势
* 无需后端:适合不希望或无法搭建后端服务器的应用,降低开发复杂度。
* 易于集成:支持多种场景和任务,使用简单,且可以通过 CDN 直接引入。
* 高效处理:支持 Web Worker,确保前端性能不会因模型处理而下降。
总结来说,transformers.js 通过在浏览器端直接运行机器学习模型,极大简化了 NLP 应用的开发,并且支持多种语言模型和任务,适用于多种前端应用场景。
更多详细信息和使用示例可以参考 transformers.js 文档【33†source】【32†source】。
AnythingLLM - 开源的、集成化的桌面AI应用
AnythingLLM 是一款开源的桌面AI应用程序,专为简化与本地和云端大语言模型(LLM)的交互而设计。以下是它的详细功能介绍:
1. 文档嵌入与交互:AnythingLLM 允许用户将各种文档(如PDF、文本文件等)嵌入到系统中,并通过本地 CPU 或云服务进行处理。这使得用户可以与文档进行智能对话,应用 Retrieval-Augmented Generation (RAG) 技术,利用文档内容作为对话的背景信息【19†source】。
2. 本地优先的隐私保护:此应用程序支持本地化运行,确保用户的隐私。大多数操作都可以在本地计算机上完成(支持 macOS、Windows 和 Linux),用户也可以选择使用第三方云服务,但这并非必须【19†source】。
3. 灵活的模型支持:除了内置的 Ollama 模型外,AnythingLLM 还支持用户安装的 Ollama、LMStudio 和 LocalAI 模型。如果用户的设备没有 GPU 资源,可以连接到诸如 OpenAI、Azure、Anthropic 等外部 API【19†source】。
4. 强大的向量数据库集成:AnythingLLM 内置了 LanceDB 向量数据库,帮助高效管理数据。它也支持其他知名的向量数据库服务,如 Pinecone、Milvus、Weaviate 等,这使得存储和检索数据更加灵活【19†source】。
5. 完全离线功能:一大亮点是它能够完全离线工作,所有必要的功能都集成在一个应用程序中,因此即使没有网络连接,也可以进行使用【19†source】。
6. 开发者友好的 API:该应用为开发人员提供了全面的 API,可以用于定制用户界面和深度集成,无论是资深开发者还是初学者,都可以根据需求自定义 AnythingLLM【19†source】。
7. 多用户支持:AnythingLLM 提供多用户环境管理,尤其是在通过 Docker 客户端自托管的情况下,支持云平台如 AWS、Railway 等【19†source】。
总结来说,AnythingLLM 是一个强大的工具,能够满足从个人到企业的各种需求,并且它完全免费和开源,用户可以根据自身需求进行自定义和托管。
Aora
Aora 是一个基于 React Native、Expo 和 Nativewind 构建的移动应用程序项目,专注于提供流畅的用户体验和动态动画。它的主要功能包括:
1. 用户引导界面:通过图形和说明欢迎新用户。
2. 身份验证系统:通过电子邮件提供安全的登录功能。
3. 主页:动画化的平铺列表展示最新的视频,方便用户浏览。
4. 下拉刷新:通过下拉动作实时刷新内容。
5. 全文搜索:提供实时搜索建议和即时结果,方便用户查找视频。
6. 标签导航:允许用户在主页、搜索和个人资料等界面间轻松切换。
7. 上传媒体:用户可以通过应用程序直接上传视频或图片。
8. 个人资料界面:展示用户上传的视频和粉丝数量等详细信息。
9. 动画效果:使用 Animatable 库来提升用户交互的体验。
Aora 项目代码可以通过 GitHub 获取,并且有详细的教程指导如何使用它。
cpufreq - Linux内核CPU 频率调节
cpufreq 是 Linux 内核提供的 CPU 频率调节工具和接口,允许用户和系统动态调节处理器的频率(时钟速度)来优化性能与电源消耗之间的平衡。通过 cpufreq,你可以在高性能模式和节能模式之间进行切换,从而减少电池消耗或提高处理器的性能。
cpufreq 的主要功能
cpufreq 通过内核模块实现,允许用户调整 CPU 频率。其基本功能包括:
* 调节 CPU 频率:根据当前系统负载,动态调整 CPU 的频率以节省能量或提升性能。
* 节能模式:在不需要全速处理器的情况下降低频率,减少功耗,延长电池寿命。
* 性能模式:在需要高性能时提升 CPU 频率,提供更好的计算能力。
* 多种频率调节器(governors):可以根据使用场景选择不同的调节策略。
cpufreq 的工作原理
cpufreq 主要通过 CPU 核心频率和电压的动态调整来控制电源管理。其核心工作机制是:
1. CPU 频率与电压的调整:当 CPU 工作负荷较轻时,cpufreq 会降低 CPU 频率和电压,减少功耗。当负荷较重时,提升 CPU 频率和电压以提高处理能力。
2. 动态频率切换:cpufreq 可以在不同频率和电压级别之间自动切换,这一过程称为 DVFS(动态电压和频率调节)。
关键组件
1. cpufreq 内核模块:这些模块直接与 CPU 驱动程序交互,控制 CPU 的频率。
* cpufreq_userspace:允许用户手动设置 CPU 频率。
* cpufreq_ondemand:根据系统负载自动调整 CPU 频率。
* cpufreq_conservative:像 ondemand 一样工作,但调整频率更为渐进。
* cpufreq_powersave:将 CPU 频率设置为最低以节省能源。
* cpufreq_performance:将 CPU 频率固定在最高,提供最佳性能。
2. Governor(调频策略):这些策略决定如何动态调节 CPU 频率。不同的 Governor 适合不同的使用场景,以下是常见的几种:
* performance:总是将 CPU 频率设置为最高,适合需要高性能的情况。
* powersave:将 CPU 频率限制在最低,节省电池和能量。
* ondemand:根据 CPU 使用率动态调整频率,负载大时提升频率,负载小则降低,适合一般用途。
* conservative:与 ondemand 类似,但频率调整更缓慢,减少频繁切换对系统的影响。
* schedutil:较新的策略,集成了内核调度程序的信息,以更高效地进行频率调整。
使用 cpufreq 工具
1. 安装 cpufrequtils
在 Ubuntu 等 Linux 发行版中,可以通过安装 cpufrequtils 工具包来控制 CPU 频率:
sudo apt install cpufrequtils
2. 查看当前 CPU 状态
使用 cpufreq-info 查看当前 CPU 的频率状态:
cpufreq-info
输出的信息包括:
* CPU 当前运行频率
* 支持的频率范围
* 当前使用的 governor
3. 手动设置 CPU 频率
你可以通过 cpufreq-set 命令来手动设置 CPU 的频率或策略(governor)。
设置 CPU 频率为特定值:
sudo cpufreq-set -r -f 1.2GHz
设置所有 CPU 使用 performance 模式:
sudo cpufreq-set -r -g performance
设置所有 CPU 使用 powersave 模式:
sudo cpufreq-set -r -g powersave
设置所有 CPU 使用conservative 模式
sudo cpufreq-set -r -g conservative
4. 查看所有支持的 governor
你可以使用以下命令列出 CPU 支持的所有 governor:
cpufreq-info -g
cpufreq 的应用场景
* 延长电池续航:在笔记本电脑或移动设备上,通过降低 CPU 频率,cpufreq 可以有效延长电池续航时间。
* 降低设备温度:当设备发热时,降低 CPU 频率可以减少功耗和散热。
* 提升性能:当设备需要处理高负荷任务时,cpufreq 可以动态提升 CPU 频率,提供更好的性能。
* 服务器省电:在数据中心或服务器场景中,通过合理的 cpufreq 设置,可以降低服务器功耗,节约能源成本。
使用注意事项
* 在某些设备上,过度降低 CPU 频率可能导致系统性能不佳,特别是在需要持续高性能的情况下。
* 频繁切换 CPU 频率会有一些开销,可能会对实时性要求高的应用产生影响。
* 不同的 CPU 支持不同的频率和 governor,因此可调节的频率范围取决于硬件。
总结
cpufreq 是一个非常强大的工具,能够动态管理 Linux 系统的 CPU 频率。通过合理设置 cpufreq,你可以在节能和性能之间取得良好的平衡,特别是在需要长时间电池续航或减少设备发热的情况下非常有用。如果你想更细粒度地控制 CPU 性能,cpufreq 是一个理想的工具。
推荐
将 CPU 的调频策略(governor)设置为 conservative 模式,你可以使用 cpufreq-set 命令来实现。具体步骤如下:
1. 安装 cpufrequtils(如果尚未安装)
首先,确保你已经安装了 cpufrequtils 工具,如果没有,可以使用以下命令进行安装:
sudo apt install cpufrequtils
2. 设置 conservative 模式
使用以下命令将所有 CPU 的调频策略设置为 conservative:
sudo cpufreq-set -r -g conservative
其中:
* -r:表示将设置应用到所有 CPU 核心。
* -g conservative:表示将调频策略设置为 conservative。
3. 验证设置是否成功
可以使用以下命令查看当前使用的 governor 是否为 conservative:
cpufreq-info
输出中应该能看到类似的信息:
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.50 GHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil
current policy: frequency should be within 800 MHz and 2.50 GHz.
The governor "conservative" may decide which speed to use
4. 确保设置在重启后生效
为了确保每次系统启动时自动应用 conservative 模式,可以将命令添加到系统启动项中。
编辑 /etc/default/cpufrequtils 文件:
sudo nano /etc/default/cpufrequtils
将文件内容设置为:
GOVERNOR="conservative"
保存文件并退出后,重启系统或重启 cpufrequtils 服务:
sudo systemctl restart cpufrequtils
这样,在每次系统启动时,CPU 都会默认使用 conservative governor。