问题标签 [sysctl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么 sysctl 在 Mac OS X 上会产生 E_INVAL?
下面是 C/Obj-C 代码的精简(省略了错误/空检查)片段,它使用 sysctl 获取 PID 50 的特定进程的 argv。
第一次调用 sysctl(以确定 argv 字符串数组的大小)成功。返回的长度约为 1600,比我预期的要大,但我认为这不是不合理的。马洛克成功了。第二次调用 sysctl 返回 -1,将 errno 设置为 22,E_INVAL。
我查看了其他代码,包括来自这个问题的代码,但看不到我的问题。我错过了什么?
linux - UDP 缓冲区的单位是什么,sysctl 参数的文档在哪里?
我正在运行 x86_64 RedHat 5.3(内核 2.6.18)并在尝试设置 UDP 缓冲区的上下文中专门查看来自 sysctl -a 的 net.core.rmem_max。接收器应用程序有时会丢失数据包,但我认为缓冲区已经足够大了,具体取决于它的含义:
此设置的单位是什么——位、字节、数据包或页?如果是位或字节,它是来自数据报/有效负载(例如 100 字节)还是网络 MTU 大小(~1500 字节)?如果是页面,页面大小是多少(以字节为单位)?
这是每个系统、每个物理设备 (NIC)、每个虚拟设备 (VLAN)、每个进程、每个线程、每个套接字/每个多播组的最大值吗?
例如,假设我的数据是每条消息 100 字节,每个网络数据包包含 2 条消息,并且我希望每个套接字能够缓冲 50,000 条消息,并且我在 4 个线程中的每个线程上为每个线程打开 3 个套接字。net.core.rmem_max 应该有多大?同样,当我在应用程序中设置套接字选项时,单位有效负载字节,所以在这种情况下每个套接字上的 5000000?
最后,一般来说,我如何找到通过 sysctl -a 看到的参数的单位详细信息?我有类似的单位和关于其他参数(如 net.core.netdev_max_backlog 和 net.ipv4.igmp_max_memberships)的问题。
谢谢你。
objective-c - 监控不包括本地流量的网络使用情况
我正在开发一个监控网络使用情况的应用程序。但是我注意到很多方法都不允许排除本地流量(例如,Time Machine)。
我正在寻找一种排除本地流量的方法,并且只监控直接进出互联网的使用情况。
更新:感谢您的回复,现在我知道如何查找流量是否为本地流量,但我仍然不知道如何计算总输入/输出字节数(抱歉,如果我之前没有详细说明)。我无法知道在特定时间段内或自操作系统启动以来本地(或互联网)发送/接收了多少字节。当操作系统运行时,进程被启动或终止,这个问题变得更加复杂。
如何在 linux/Mac OSX 中获取网络适配器统计信息?给出了一种总结总使用量的有趣方式,但它没有帮助,因为它总结的使用量是接口统计信息。
更新 2:我已经发布了我的最终解决方案。请向下滚动一点查看。
java - 有没有办法改变 JVM 可以在 OS X 10.6 上创建的最大线程数?
根据这个stackoverflow 帖子,Mac OS X 10.6 对 JVM 或任何应用程序可以创建的线程数有限制。可以通过在终端中运行以下命令来显示限制:
和
systctl有可能在 Linux 上覆盖这些值,但在 OS X 上则不行。根据这个手册页,这些字段是不可更改的。
所以我的问题是,在 OS X 10.6 上,是否有另一种方法可以覆盖可以创建多少线程的限制?
macos - 有人知道 MAC OS X 的 NETLINK Sockets API 等效吗?
有人知道 MAC OS X 的 NETLINK Sockets API 等效吗?我正在尝试将 Linux 应用程序移植到 MAC OS X,但在 MACOS 中找不到类似的东西。
我需要在我的应用程序中提供对网络适配器的异步访问。
每隔一定的秒数轮询网络适配器关于配置更改等对我来说不是方便的解决方案。NETLINK Socket API 让我只有在发生有趣的事情时才会收到通知。
我知道 NETLINK 是 Linux 特定的东西,用于在 Linux 内核和用户空间之间进行通信,但在 MACOS 下可能存在类似 NETLINK 的东西。
我看到了与内核通信的唯一工具——sysctl()
有人有任何信息吗?
linux - 如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?
如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?
Linux中有两个ctl。/proc/sys/net/core/rmem_max - 最大 TCP 接收窗口 (NET_CORE_RMEM_MAX) /proc/sys/net/core/wmem_max - 最大 TCP 发送窗口 (NET_CORE_WMEM_MAX)
但我找不到如何在 mac os 中获取这些参数。
有人知道吗?
我在 MAC OS X 中找到了以下 ctls:net.inet.tcp.recvspace、net.inet.tcp.sendspace、kern.ipc.maxsockbuf
看来recvspace+sendspace 不能大于maxsockbuf。我在这里读过它:http: //www.macgeekery.com/tips/configuration/mac_os_x_network_tuning_guide_revisited
linux - 更改每个连接的拥塞控制算法
到目前为止,Linux 中的命令“sysctl”会全局更改整个系统的拥塞控制算法。但是拥塞控制,其中 TCP 窗口大小和其他类似参数是变化的,通常是每个 TCP 连接完成的。所以我的问题是:
- 是否存在可以更改每个 TCP 连接使用的拥塞控制算法的方法?
还是我在这里遗漏了一些微不足道的东西?如果是这样,它是什么?
objective-c - NSAutoreleasePool 中的 sysctl -> 总线错误和段错误
在此先感谢所有试图帮助我的人。我在这里遇到了一个大问题,我找到了一些关于 sysctl 的示例代码并对其进行了扩展,以便我可以查询网络接口的输入/输出数据。当我直接在 main() 中运行此代码(没有任何 NSAutoreleasePool)时,一切正常。但是,一旦我将它添加到我的班级并执行它,我就会得到总线错误和段错误。我已将问题追溯到 NSAutoreleasePools。有人可以帮忙吗?(如果您不相信,只需在代码之前放置一个 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 并将整个内容放入 main())
linux-kernel - 需要根据自己的服务器需求“计算”出最佳的 ulimit 和 fs.file-max 值
需要根据我自己的服务器需求“计算”最佳 ulimit 和 fs.file-max 值。请不要与“如何在各种 Linux 发行版中设置这些限制”问题相冲突。
我在问:
- 有没有什么好的指南可以详细解释,用于ulimit的参数?(> 2.6 系列内核)
- 是否有任何好的指南来显示 fs.file-max 使用指标?
实际上,我可以在网上找到一些旧的参考资料:http: //www.faqs.org/docs/securing/chap6sec72.html “我们拥有的每 4M RAM 有 256 个合理的东西:即对于 128 MB 的机器RAM,将其设置为 8192 - 128/4=32 32*256=8192"
感谢任何最新的参考。
ios4 - 在 iOS4 上获取特定进程的 CPU 使用率
我正在尝试使用 Apple SDK 从在 iOS4 上运行的后台应用程序获取各种进程的 CPU 使用率(cpu 滴答声)。这完全是在用户同意的情况下完成的,因此这里没有不道德的地方。
我使用 sysctl 获取进程列表,但进程的 cpu 滴答始终从设备返回为 0。或者,我尝试寻找前台进程并每隔几秒轮询一次以获取应用程序的使用情况。但是,没有指示进程是在前台还是后台运行的 API/标志。我事件检查了进程的内存消耗,并确定它是否在后台运行(如果在后台,内存不会波动)。但是,API proc_pidinfo 是私有的,Apple 拒绝了该应用程序。
我看过一些与此类主题相关的帖子,但没有得到明确的答案。
我知道沙盒不允许获取有关其他应用程序的信息(顺便说一句,这不是真的,因为 sysctl 提供了 PID、进程名称和开始时间)。但是,我在 Zokem 的应用商店中看到了一个名为 MyLife 的应用程序,他们报告了此类信息。它们精确到秒。我想知道是否有存储此信息的系统日志或数据库。
有人对获取应用程序的使用时间有想法吗?