This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This doesn’t mean we don’t accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).
- Last 7 days
-
github.com github.com
-
-
www.oversightboard.com www.oversightboard.com
-
Broadening the signals of lack of consent in this way would especially benefit non-public figures who are the targets of non-consensual intimate imagery because it would reduce the burden on victims to report the abuse themselves.
大多数人认为保护非公众人物需要更多资源或特殊渠道,但作者认为只需扩大'缺乏同意'的信号范围就能减轻受害者负担,这挑战了需要复杂解决方案的常规思维。这一观点暗示平台可以通过简单的政策调整而非系统性改革来保护弱势群体。
-
-
www.tomshardware.com www.tomshardware.com
-
The Financial Times reported earlier in June that roughly six Anthropic engineers are embedded directly inside the agency as forward-deployed staff, adapting and customizing Mythos for specific operational applications, with sources indicating the work could extend to infiltrating networks operated by countries including China and Iran.
大多数人认为政府限制AI模型是出于安全考虑,防止其落入敌对势力手中,但作者指出NSA实际上正在内部利用这些AI模型进行潜在的网络渗透活动。这种矛盾挑战了政府政策的一致性,暗示国家安全考量可能具有双重标准。
-
The story sheds light on the June 12 U.S. government directive barring all foreign nationals, including Anthropic's own non-citizen employees, from accessing the Fable 5 and Mythos 5 models, citing national security concerns.
大多数人认为政府限制AI模型访问是出于对技术本身风险的担忧,但作者暗示这一禁令实际上是对AI模型已展示出惊人渗透能力的直接反应。这挑战了公众对政府限制AI的动机认知,暗示真正的威胁不是理论上的,而是已被证实的实际能力。
Tags
Annotators
URL
-
-
-
I think you may underestimate how much nations do in fact work together on emerging technologies, even if they are in a heated competition.
这是作者在回复评论时的一个观点,值得进一步探究。需要核实在AI等新兴技术领域,中美之间是否存在实际的合作案例,以及这种合作的深度和广度。同时需要评估这一观点是否带有偏见,是否过于乐观地看待了国际技术合作的可能性。
-
-
techcrunch.com techcrunch.com
-
The cutbacks take place not long after Accenture threatened that employees would 'risk losing out on promotions' if they didn't use AI, 404 writes.
这是一个值得深入了解的背景信息,显示Accenture在AI使用政策上的矛盾行为。从威胁不使用AI会影响晋升,到限制AI使用的转变,反映了企业对AI价值的重新评估。这一转变的时机和原因值得进一步调查,以及这是否是行业普遍趋势。
-
-
www.cnbc.com www.cnbc.com
-
The letter lands two months after the White House Office of Science and Technology Policy issued a memorandum that pledged to help AI companies detect and coordinate against industrial-scale distillation.
这句话提供了重要的政策背景,表明此事件发生在特定的政策环境下。需要了解该备忘录的具体内容和实施情况,以及它如何影响Anthropic和Alibaba的行为。这涉及到政府政策与科技行业实践之间的互动关系,值得深入了解。
-
-
www.wired.com www.wired.com
-
The Trump administration has been happier talking to Anthropic lately, according to people familiar with the matter: They don't have to deal with CEO Dario Amodei anymore
大多数人认为政府与企业高管之间的互动是基于正式的官方渠道和职位身份,但这篇文章暗示特朗普政府更愿意与Amodei的联合创始人Tom Brown而非Amodei本人进行谈判,这表明政府可能更看重个人关系而非官方职位,这在政治与科技行业的关系中是一个非传统的观点。
-
- Jun 2026
-
www.politico.eu www.politico.eu
-
"must burn planet for data centers"
-
-
www.wired.com www.wired.com
-
Trump administration officials tell WIRED that if Anthropic wants to rerelease Fable 5, it will need to ensure the model's guardrails can't be circumvented.
这是一个需要核实的重要事实声明,涉及特朗普政府对AI安全的具体要求。需要确认这是否是官方政策,以及这些要求是否合理和可行。这反映了政府与AI公司之间日益紧张的关系。
-
-
techcrunch.com techcrunch.com
-
the message is clear: The AI industry isn't immune from U.S. government interference
大多数人可能认为AI技术的前沿性质使其能够规避传统监管框架,但作者认为政府的禁令明确传递了一个信息:即使是尖端AI技术也不能摆脱政府干预。这与科技行业自认为能够自我监管的普遍认知相悖。
-
The Trump administration's decision that forced Anthropic to pull its latest cybersecurity models could be reactionary, retaliatory, or both
大多数人认为政府决策是基于技术评估和国家安全考量,但作者暗示这可能是一种报复性行为或反应性措施,而非基于技术本身的价值判断。这与人们对政府决策过程的常规理解相悖。
-
-
www.latent.space www.latent.space
-
Anthropic paired the controversy with a policy
揭示企业通过政策转移争议焦点,将私有控制问题转化为公共监管议题的策略。
Tags
Annotators
URL
-
-
techcrunch.com techcrunch.com
-
Apple revealed that all devices from the iPhone 11 onward will be eligible for their upcoming software update. And that update comes with a flurry of performance improvements it's touting across a number of its OS releases this year
大多数人认为苹果会通过新系统更新淘汰较旧设备以刺激硬件销售,但苹果却选择支持5年前的iPhone 11,并承诺显著性能提升。这与苹果通常推动用户升级硬件的策略相悖,表明苹果在软件支持策略上更加用户友好,而非纯粹的商业驱动。
-
-
www.technologyreview.com www.technologyreview.com
-
There is no comparable national-level ambition or coordinated map elsewhere in the world at the moment.
大多数人认为脑机接口发展主要由私营企业和研究机构推动,但作者认为中国通过国家层面的战略规划和资源投入,正在建立全球独一无二的BCI发展生态系统。这一观点挑战了科技发展主要由市场力量驱动的传统认知,强调了国家战略在新兴科技领域的关键作用。
-
- May 2026
-
arstechnica.com arstechnica.com
-
Trump delays AI safety testing EO, claiming it would be an innovation 'blocker.' 'I really thought [the order] could have been a blocker.'
大多数人认为政府AI安全测试会促进创新和保障安全,但作者认为特朗普认为安全测试会阻碍创新,这挑战了监管通常被认为能促进负责任创新的共识。
-
Trump has taken a hands-off approach to regulating AI since retaking office, but members of his administration got spooked and began recommending safety testing after Anthropic flagged cybersecurity risks with its latest model, Mythos.
大多数人认为特朗普政府会继续其宽松的科技监管立场,但作者认为特朗普政府内部出现了分歧,部分官员在安全事件后转向支持AI安全测试,这挑战了人们对特朗普一贯的监管风格的预期。
-
-
spectrum.ieee.org spectrum.ieee.org
-
Infrastructure built without minimum terms produces dependency. Infrastructure built with them produces leverage.
这句话简洁有力地总结了基础设施建设的两种可能结果,突出了政策制定中的关键选择。通过对比'dependency'和'leverage',作者清晰地传达了政策条件如何决定国家在AI生态系统中的地位,这一洞见不仅适用于南非,也适用于所有正在制定AI政策的国家。
-
In physics, leverage requires three things: a fulcrum, a lever arm, and the ability to apply force.
作者巧妙地借用物理学中的杠杆原理来比喻南非的AI政策制定过程,这种比喻生动形象且易于理解。将矿产比作'fulcrum'(支点),政策比作'lever arm'(杠杆臂),而未明确规定的'OPTION'条款则是施加力量的地方,这种类比使复杂的政策问题变得直观且引人深思。
-
South Africa is not just another developing country struggling to govern artificial intelligence; it is the exception with leverage, and the window to act on it is closing.
这句话精准地定义了南非在AI政策制定中的独特地位,强调了其拥有特殊优势但正在错失机会。作者用'exception with leverage'这一简洁有力的表述,点明了南非作为非洲大陆AI治理的关键角色,而'window to act on it is closing'则传达了紧迫感,使读者立即认识到问题的严重性。
-
-
www.theatlantic.com www.theatlantic.com
-
Lewis, Helen. 2026. “The Men Who Want Women to Be Quiet.” The Atlantic 336(6): 26–35. https://www.theatlantic.com/magazine/2026/06/conservative-masculinism-misogyny/686939/ (May 27, 2026; May 28, 2026).
Tags
- Manhattan Institute
- Helen Andrews
- read
- Kamala Harris
- Gloria Steinem
- Joel Webbon
- anti-feminism
- kayfabe
- Christopher Rufo
- David Graham
- The Joe Rogan Experience
- tax policy
- hate preacher
- 19th Amendment
- Nick Fuentes
- Revana Shurfuddin
- Jordan Peterson
- Tucker Carlson
- Joe Rogan
- Katie Miller
- Andrew Wilson
- attention economy
- Christopher Hitchens
- Donald J. Trump
- Rachel Wilson
- L0m3z
- Ben Shapiro
- Ron DeSantis
- Whatever (podcast)
- Trumpism
- Richard Hanania
- doxxing
- Helen Lewis
- Regnery (publishing imprint)
- Phyllis Schlafly
- The Feminine Mystique
- Gad Saad
- Ipsos
- AWFUL (Affluent White Female Urban Liberal)
- Pete Hegseth
- Charles Cornish-Dale (Raw Egg Nationalist)
- Liberalism
- Based Ritual
- toxic masculinity
- hypocrisy
- Claremont Institute
- Josh Hawley
- Andrew Tate
- Sneako
- Mark Driscoll (William Wallace II)
- Larry Summers
- the longhouse (anti-feminist thesis)
- affirmative action
- Myron Gaines
- J. D. Vance
- family planning
- legislating behavior
- American Citizenship Initiative
- Karen Swallow Prior
- masculinism
- Betty Friedan
- Occult Feminism
- Title IX
- Inez Stepman
- Douglas Wison
- taboos
- Equal Rights Amendment (ERA)
- References
- manosphere
- Huberman Lab
- misogyny
- cancel culture
- Scott Yenor
- The Heritage Foundation
- Project 2025
- Peter Thiel
Annotators
URL
-
-
callyzer.co callyzer.co
-
Insurance marketing strategies
How do you sell an insurance policy to customers? Find best practices to promote your insurance policies and build a strong customer relationship that later increases your sales.
Know More: https://callyzer.co/blog/how-to-sell-an-insurance-policy-to-customers-a-comprehensive-guide/
-
-
www.thealgorithmicbridge.com www.thealgorithmicbridge.com
-
A Chinese court ruled that companies can't dump the costs of AI automation onto workers.
这一法律裁决表明中国在保护工人权益方面采取了积极立场,防止企业将AI自动化的成本转嫁给工人。这种政策立场反映了政府对技术变革中工人权益的保护,与一些西方国家可能更偏向企业的做法形成对比。
-
-
epoch.ai epoch.ai
-
export controls are leakier than previously understood
【洞察】「出口管制比之前理解的更加漏洞百出」——这句话是对整个西方 AI 地缘政治战略的严厉评价。更令人不安的是:如果走私渠道如此有效,那么比芯片更容易传输的「模型权重」和「训练技术」的扩散速度只会更快。硬件管制是可见的,但知识扩散是不可见的。Epoch AI 的数据与 Anthropic 指控中国公司「蒸馏」其模型放在一起读,呈现出一幅完整的算力与知识双重扩散图景。
-
-
arstechnica.com arstechnica.com
-
Maintaining the standards in this policy is a shared obligation across our editorial operation.
这一声明强调了在编辑团队中维护政策标准的共同责任,体现了集体承诺和团队协作的重要性。
-
- Apr 2026
-
www.technologyreview.com www.technologyreview.com
-
Chinese authorities have reportedly been pushing data centers and public computing projects to use more domestic chips, including through reported bans on foreign-made chips, sourcing quotas, and requirements to pair Nvidia chips with Chinese alternatives.
大多数人认为中国芯片政策主要是市场驱动,但作者揭示了中国政府通过强制配额、禁令等行政手段推动国产芯片使用。这一观点挑战了'中国AI发展主要依靠市场力量'的共识,突显了国家战略在技术发展中的主导作用。
-
-
electrek.co electrek.co
-
Emissions in advanced economies grew faster (+0.5%) than in emerging and developing economies (+0.3%) for the first time since the 1990s.
大多数人认为发达国家已经控制了排放增长,而发展中国家是排放增长的主要来源,但作者认为发达国家排放增长首次超过发展中国家,这挑战了传统的排放责任认知。
-
-
www.technologyreview.com www.technologyreview.com
-
We have not really begun to make this progress with AI. Why, for example, is this dashboard not found on a government website?
大多数人认为AI发展主要由私营部门推动,政府只是事后监管。作者质疑为什么政府没有像应对疫情一样建立AI监测和应对系统,这一观点挑战了当前AI治理模式的主流认知,暗示我们需要更系统化的公共AI管理框架。
-
-
www.youtube.com www.youtube.com
-
www.wired.com www.wired.com
-
The bill would shield frontier AI developers from liability for 'critical harms' caused by their frontier models as long as they did not intentionally or recklessly cause such an incident
这一条款提出了一个令人惊讶的责任豁免标准,即只要AI开发者没有故意或鲁莽行为,即使其技术导致大规模伤亡或重大财务损失,也可免于法律责任。这实际上将AI安全责任从开发者转移给了使用者,可能削弱AI公司对产品安全性的内在动力。
-
-
discuss.ai.google.dev discuss.ai.google.dev
-
We are moving to disable the usage of unrestricted API keys in the Gemini API, should have more updates there soon.
Google计划禁用无限制API密钥的决定反映了AI服务安全策略的重大转变,这可能成为行业标准,但也给开发者带来兼容性挑战,需要重新评估现有的API密钥管理策略。
-
Google spent over a decade telling developers that Google API keys (like those used in Maps, Firebase, etc.) are not secrets. But that's no longer true.
这一声明揭示了Google API安全政策的根本性转变,从长期将API密钥视为非机密信息到现在要求保密,这种转变对开发者安全实践有重大影响,反映了AI服务成本和安全风险的新现实。
-
-
a16z.com a16z.com
-
To accept the existential stakes of that prospect while simultaneously treating the next frontier of superweapon proliferation as an ordinary issue of private property betrays a deep confusion about the problem that this moment presents.
这句话尖锐地指出了当前政策制定中的矛盾:一方面承认AI可能带来的生存风险,另一方面却将其视为普通财产问题。这种不一致性反映了我们对新兴技术威胁的理解与应对措施之间的脱节,暗示需要全新的治理框架。
-
-
-
policy makers now view cutting-edge AI offensive security capabilities as a systemic financial infrastructure risk
令人惊讶的是:政策制定者已将前沿AI攻击能力视为系统性金融基础设施风险,这标志着AI安全威胁的认知已经从技术层面上升到国家战略层面,反映了AI技术发展带来的新型国家安全挑战。
-
-
www.theguardian.com www.theguardian.com
-
The OpenAI deal was part of a larger series of UK-US investments intended to 'mainline AI' into the British economy.
令人惊讶的是:英国和美国政府竟然计划将AI技术'直接注入'英国经济,这种表述暗示了AI技术可能被视为一种可以像药物一样'注射'到经济系统中的物质,反映了政府对于AI技术的急切态度和对技术简单化的理解,忽略了技术发展的复杂性和潜在风险。
-
-
www.theaivalley.com www.theaivalley.com
-
OpenAI has published a 13-page policy paper arguing that AI may require a new social contract, with proposals that include taxing automated labor, creating a public wealth fund, expanding access to AI, and testing a four-day workweek.
令人惊讶的是:OpenAI不仅是一家技术公司,还开始提出社会政策建议,包括对自动化劳动征税、创建公共财富基金、扩大AI准入和测试四天工作制。这表明OpenAI正在从技术公司转变为社会政策影响者,承认AI对社会结构的深远影响。
-
-
www.latent.space www.latent.space
-
we are NSFW-friendly so here goes…
令人惊讶的是:一个主流AI媒体平台公开表示对NSFW(不适合工作场所)内容友好,这在传统科技媒体中相当罕见。这反映了AI社区对内容审查态度的转变,以及对更广泛AI应用场景的包容性增强。
-
-
www.gadgetreview.com www.gadgetreview.com
-
Maine advances first statewide moratorium blocking data centers requiring over 20 megawatts
令人惊讶的是:缅因州将成为美国第一个全范围禁止大型数据中心建设的州,这一政策针对的是超过20兆瓦的数据中心设施,这在科技发展迅速的今天显得格外独特和出人意料。
-
-
thenextwavefutures.wordpress.com thenextwavefutures.wordpress.com
-
In Washington, the AI policy discourse is sometimes framed as a 'race to AGI.' In contrast, in Beijing, the AI discourse is less abstract and focuses on economic and industrial applications that can support Beijing's overall economic objectives.
令人惊讶的是:中美对AI的战略定位存在根本差异——美国聚焦于通用人工智能(AGI)的竞赛,而中国则更注重经济和工业应用。这种差异反映了两国的技术哲学和治理模式,也解释了为什么中国在有限计算资源下仍能发展出更具实用性的AI应用。
-
-
-
The survey did not investigate the causes of the increase in Claude usage, but timing coincided with a period that included a public dispute with the US government
令人惊讶的是:Claude使用率的增长恰逢与美国政府的公开争议时期,这可能暗示了争议反而提升了公众对Claude的关注度和使用意愿。这种现象在科技产品中并不常见,通常负面事件会导致用户流失。
-
-
9to5mac.com 9to5mac.com
-
Apple has also been pushing back against certain iOS-based vibe coding apps that, according to the company, break App Review Guidelines and the Developer Program License.
令人惊讶的是,尽管苹果自己也在开发AI工具支持Xcode,但它却在积极阻止某些基于iOS的AI编码应用程序,因为它们违反了应用审核指南和开发者计划许可。这种矛盾立场反映了苹果在拥抱AI创新与维持对其平台的严格控制之间的复杂平衡。
-
In recent weeks, Apple has either pulled or blocked updates to apps such as Anything and Replit, pushing developers to change how their tools generate and execute code.
令人惊讶的是,苹果正在积极阻止或撤回使用AI编码工具的应用程序更新,如Anything和Replit。这表明苹果对AI生成和执行代码的方式持谨慎态度,担心这些工具可能违反其应用审核指南和开发者计划许可,反映了公司对AI技术复杂性的担忧。
-
-
d12t4t5x3vyizu.cloudfront.net d12t4t5x3vyizu.cloudfront.netuntitled1
-
LEARNING AND EMPLOYMENT15RECORD .—The term ‘learning and employment16record’ means a digital, machine-readable17record of an individual’s educational and em-18ployment history that—19‘‘(i) contains information that may be20self attested and is verified by the employ-21ers, persons for whom the individual per-22formed services, and education and train-23ing providers of such individual;24March 30, 2026 (2:21 p.m.)G:\M\19\OWENUT\OWENUT_038.XMLg:\VHLC\033026\033026.020.xml (1052619|1)
LERs in legislation!
-
-
www.technologyreview.com www.technologyreview.com
-
We need, like, a Manhattan Project to collect this
经济学家呼吁以“曼哈顿计划”的规模来收集各行业价格弹性数据,凸显了当前AI经济研究的底层基础设施极度匮乏。没有跨经济体的系统性微观数据支撑,任何关于AI就业前景的预测都是盲人摸象,政策制定更是无从谈起。
-
-
huggingface.co huggingface.co
-
the design of the retrieval and cache policy, especially how they decide what to keep, reuse, or drop across scenes, seems to be what actually drives the latency and throughput gains
大多数研究者可能关注模型架构或算法创新来提升性能,但评论者指出检索和缓存策略的设计才是延迟和吞吐量提升的关键。这一观点挑战了AI研究中过度关注模型本身的倾向,暗示系统优化和资源管理策略可能比模型架构创新对性能影响更大,这是一个反直觉的系统设计见解。
-
-
hackernoon.com hackernoon.com
-
The government has so far favoured a pro-innovation, sector-led approach, prioritising voluntary principles over hard regulation.
大多数人认为政府会迅速采取立法行动保护创作者权益,但作者指出英国政府实际上倾向于自愿原则而非硬性监管。这一观点挑战了公众对政府会在AI版权问题上采取强硬措施的预期,揭示了政策制定的实际倾向。
-
introducing a commercial text and data mining exception for AI training would expand the AI sector in the country.
大多数人认为放宽数据挖掘限制会促进AI创新和增长,但作者认为这种例外实际上不会扩大AI产业。这一观点与科技行业普遍倡导的'更多数据等于更好AI'的信念相悖,挑战了数据自由流动的主流叙事。
-
The government has so far favoured a pro-innovation, sector-led approach, prioritising voluntary principles over hard regulation.
大多数人认为英国政府在AI监管方面会采取强硬立场保护创作者权益。但作者指出政府实际上倾向于亲创新、行业主导的方法,优先考虑自愿原则而非硬性监管。这一发现与公众对政府保护创作者的期望形成鲜明对比,揭示了政策现实与公众认知之间的差距。
-
- Mar 2026
-
tacticaltech.org tacticaltech.org
-
Tactical Tech book on the link between climate urgency discourse and tech.
-
- Jan 2026
-
mycourses.cnm.edu mycourses.cnm.edu
-
Dating is hard, but as AI gets more sophisticated and becomes integrated into our everydaylives, we shouldn’t be afraid to allow it to lend us a hand. Just don’t forget to thank it at thewedding.
Because McArthur claims "...we shouldn't be afraid to allow it to lend us a hand," this shows that he's suggesting the reader to have a change of attitude towards AI and that we should let our guard down and allow it to help us.
-
-
www.theregister.com www.theregister.com
-
Her proposed solution, embodied in the Eurostack Foundation, is not more regulation but an industrial strategy focused on three pillars:
With which she says the regulatory framework is useful as is?
-
If a major American cloud provider were to restrict European access or cease operations, the consequences would be immediate and severe. This fragility has created a market opportunity that American hyperscalers are now exploiting.
That is the reason to want change, not to not do it. How is the existing dependence an opportunity 'now' for those Europe is dependent on?
-
A recent analysis by the Australian Strategic Policy Institute found that of 64 crucial technologies, China leads in 57 and the United States in the remaining seven. Europe leads in none.
Another non sequitur. While a useful analysis, you don't need to 'lead' anything to do things differently than others. Doing it differently may mean you become a leader. You can't sit around waiting to be leading first and then change your practice.
-
-
the-job.beehiiv.com the-job.beehiiv.com
-
The U.S. Department of Education says these integrated, next-generation strategies should feature a credential registry, learning and employment records (LERs), and a skills-based job description generator.
FIPSE grants required these. LER is part of what's required.
-
-
www.dnsbelgium.be www.dnsbelgium.be
-
Peter Vergote, legal advisor at DNS Belgium: "Our data and processes at AWS are located on European soil, spread across multiple data centres. This is perfectly in line with European legislation such as GDPR and NIS2 .
That is technically true, but not in practice. The 2018 Cloud Act makes all EU reg moot points from the US perspective. That makes any American involvement in your stack by def a breach of NIS2, GDPR and other digital and data related regs.
-
-
www.eiopa.europa.eu www.eiopa.europa.eu
-
regulation wrt digital resilience of financial entities, fully applicable since 17-1-2025
-
-
danwang.co danwang.co
-
I’ve had Silicon Valley friends tell me that they are planning a trip to China nearly every month this year. Silicon Valley respects and fears companies from only one other country. Game recognizes game, so to speak. Tech founders may begrudge China’s restrictions; and some companies have suffered directly from IP theft. But they also recognize that Chinese companies can move even faster than they do with their teams of motivated workers; and Chinese manufacturers are far ahead of US capabilities on anything involving physical production. Some founders and VCs are impressed with the fact that Chinese AI companies have gotten this far while suffering American tech restrictions, while leading in open-source to boot.
SV techies plan monthly trips to China, as indicator for how China is doing and how US tech sees it
-
-
escapeforward.substack.com escapeforward.substack.com
-
reads like a useful piece on some of the weird narratives I've heard around European digital autonomy and/or sovereignty, wrt the Eurostack initiative
- [ ] return
-
- Oct 2025
-
-
science still has the yellow the yellow leadership um um shirt and um business is still trying to keep keep you know in the in the pelaton
for - metaphor - Tour de France - decarbonization - Science in lead - business second - policy distant 3rd - Johan Rockstrom
-
after 2015 we know that policy actually did not step up and deliver. So there's a big disappointment with the political leadership in the world, but business actually stayed on track
for - quote - Paris Accord - 2025 - policy lagged but business stayed on track - Johan Rockstrom
-
- Sep 2025
-
www.timesofisrael.com www.timesofisrael.com
-
s part of a group organized by the Council for Arab-British Understanding,
huh
Tags
Annotators
URL
-
-
www.youtube.com www.youtube.com
-
This paper’s authors argue that using GWP to assess the relative planetary warming caused by various different sectors is therefore a deeply flawed metric. They propose that a better measure for policymakers to adopt would be something called Effective Radiative Forcing, or ERF.
for - youtube - Just have a think - new paper - new metric for measuring emissions - ERF - to - paper - Increased transparency in accounting conventions could benefit climate policy - https://hyp.is/CUcbhF2TEfCn1ieAeq73JA/iopscience.iop.org/article/10.1088/1748-9326/adb7f2 - climate crisis - carbon emissions - agriculture has the highest of all - AgroSphere Technologies - cite this paper
Tags
- AgroSphere Technologies - cite this paper
- youtube - Just have a think - new paper - new metric for measuring emissions - ERF
- climate crisis - carbon emissions - agriculture has the highest of all
- to - paper - Increased transparency in accounting conventions could benefit climate policy
Annotators
URL
-
- Aug 2025
-
www.theatlantic.com www.theatlantic.com
-
The moment came in May, when CNBC’s Megan Cassella asked Trump about “TACO,” an acronym for “Trump always chickens out.” The phrase had gained popularity in the financial sector as a derisive shorthand for the president’s penchant for backing down from his tariff threats. During an otherwise routine Oval Office event, Trump sputtered angrily at Cassella, claiming that his shifting tariff timelines were “part of negotiations” and admonishing, “Don’t ever say what you said.”
-
-
www.youtube.com www.youtube.com
-
for - definition - reverse Robin Hood - steal from the poor to give to the rich - adjacency - Trump policy - reverse Robin Hood
-
- Jul 2025
-
www.nytimes.com www.nytimes.com
-
Opinion: This Is Who’s Really Driving the Decline in Interest in Liberal Arts Education by [[Jennifer Frey]] 2025-07-17 in New York Times
Frey argues that it's college administrators who are killing off the idea of a liberal arts education. In her experience, students are thrilled to be in these programs and participate in them.
Me: Some of the pressure, also indicated here, is from toxic capitalism which is pressuring students to be only career-focused in their educational journeys. This pressure leaves much less space for the humanities.
Read: Fri 2025-07-18 7:13 PM Updated: 2025-07-19
-
-
www.nytimes.com www.nytimes.com
-
China's Clean Energy Boom Could Win the Race to Power the Future by [[David Gelles]], [[Somini Sengupta]], [[Keith Bradsher]], [[Brad Plumer]], [[Harry Stevens]]
-
-
www.rollingstone.com www.rollingstone.com
-
The Worst Parts of Trump and the GOP’s Disastrous Tax Bill by [[Nikki McCann Ramirez]], [[Ryan Bort]], [[Tim Dickinson]]
-
-
www.nytimes.com www.nytimes.com
-
What's in the Senate Version of Trump's Big Policy Bill? by [[Alicia Parlapiano]], [[Margot Sanger-Katz]], [[Aatish Bhatia]], [[Josh Katz]]
200 Billion for Homeland Security, ICE, and crazy pants?! I can only imagine if instead we invested in education instead.
-
- Jun 2025
-
agilemanifesto.org agilemanifesto.org
-
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
The "this over that" policy preferences.
-
-
papers.ssrn.com papers.ssrn.com
-
-
Hayek, F. A. The Road to Serfdom: Text and Documents, The Definitive Edition. Edited by Bruce Caldwell. 1944. Reprint, University of Chicago Press, 2010.
-
-
scholarship.law.bu.edu scholarship.law.bu.edu
Tags
Annotators
URL
-
-
institutodelibertadeconomica.org institutodelibertadeconomica.org
-
It’s clear how relevant Hayek’s warnings remain today. Economic freedom—unlike in the 1980s and ’90s—is in retreat. Faith in “industrial policy” has come to dominate in China, the U.S. and Europe. At the same time, intellectual freedom is under threat as proponents of a woke ideology strive to politicize all of life. Mathematics is now considered “racist” by some, while freedom of speech is under threat. Opponents of economic freedom often oppose intellectual freedom as well.
-
- May 2025
- Mar 2025
-
www.nytimes.com www.nytimes.com
-
Donald Shoup, 86, Dies; Scholar Saw the Social Costs of Free Parking by [[Michael S. Rosenwald]]
-
-
www.lucsus.lu.se www.lucsus.lu.se
-
for - Christine Wamsler - Lund University - homepage - from - youtube - Mindfulness World Community - Awareness, Care and Sustainability for Our Earth - https://hyp.is/GCUJ1APHEfCcr_vvv3lAFw/www.youtube.com/watch?v=CTUc_0GroGM
-
to - paper - An Interdisciplinary Model to Foster Existential Resilience and Transformation
-
to - paper - Engaging high-income earners in climate action : Policy insights from survey experiments
- for Deep Humanity Wealth 2 Wellth program
- https://hyp.is/MIc0DgPKEfC_Z5v_n8P8mA/www.sciencedirect.com/science/article/pii/S0921800924002842
-
to - paper - Revolutionising sustainability leadership and education : addressing the human dimension to support flourishing, culture and system transformation
- for - LCE leadership academy
- https://hyp.is/nLBHtAPLEfCvUUNZrc_uqw/link.springer.com/article/10.1007/s10584-023-03636-8
-
to - The System Within : Addressing the inner dimensions of sustainability and systems change
- to - paper - Transformative Climate Resilience Education for Children and Youth: From Climate Anxiety to Resilience, Creativity and Regeneration, Literature review conducted for the ERASMUS+ Project 2023-1-SE01-KA220-SCH-000158705
- for - SRG/TPF/LCE ward-level afterschool outreach program but it's currently a dead link and inaccessible
- to - IMAGINE sustainability : integrated inner-outer transformation in research, education and practice
- for - Deep Humanity open source praxis
- Human Interior Transformation (HIT) and
- Social Exterior Transformation (SET) //
- https://hyp.is/5_GsSAPNEfC82DMDillDTw/link.springer.com/article/10.1007/s11625-023-01368-3
research areas - sustainable cities - collaborative governance - city-citizen collaboration - citizen participation - sustainability and wellbeing - sustainability transformation - inner development goals - inner transformation - inner transition - existential sustainability
-
Tags
- Christine Wamsler - Lund University - homepage
- for - Deep Humanity Wealth 2 Wellth program
- from - youtube - Mindfulness World Community - Awareness, Care and Sustainability for Our Earth
- Christine Wamsler - research areas
- to - paper - Revolutionising sustainability leadership and education : addressing the human dimension to support flourishing, culture and system transformation
- for - SRG/TPF/LCE ward-level afterschool outreach program but it's currently a dead link and inaccessible
- to - paper - Transformative Climate Resilience Education for Children and Youth: From Climate Anxiety to Resilience, Creativity and Regeneration, Literature review conducted for the ERASMUS+ Project 2023-1-SE01-KA220-SCH-000158705
- to - paper - Engaging high-income earners in climate action : Policy insights from survey experiments
- to - IMAGINE sustainability : integrated inner-outer transformation in research, education and practice
- for - LCE leadership academy
- to - paper - An Interdisciplinary Model to Foster Existential Resilience and Transformation
- to - The System Within : Addressing the inner dimensions of sustainability and systems change
Annotators
URL
-
-
www.youtube.com www.youtube.com
-
for - Canada could troll Us policy - annex Alaska
-
-
pluralistic.net pluralistic.net
-
In tech, we have four of these constraints, anti-enshittificatory sources of discipline that make products and services better, pay workers more, and keep executives’ and shareholders' wealth from growing at the expense of customers, suppliers and labor.
1) markets 2) regulation 3) interoperability 4) labor
-
And I think there's good news there, because if enshittification isn't the result of a new kind of evil person, or the great forces of history bearing down on the moment to turn everything to shit, but rather the result of specific policy choices, then we can reverse those policies, make better ones and emerge from the enshittocene, consigning the enshitternet to the scrapheap of history, a mere transitional state between the old, good internet, and a new, good internet.
enshittocene enshitternet bit too cute I think. Valid point: if it's policy that results in it, we can roll things back. Also w the current Trump chaos-admin there's opportunity as US is dismantling international agreements, making room for other nations / EU regs to disalign too.
-
- Feb 2025
-
elixir.bootlin.com elixir.bootlin.com
-
#define NCHUNKS_ORDER 6
used for bit shift ops. 2^6 = 64 bytes or chunks depending upon your problem
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (pgdat->kswapd_failures >= MAX_RECLAIM_RETRIES || (pgdat_balanced(pgdat, order, highest_zoneidx) && !pgdat_watermark_boosted(pgdat, highest_zoneidx))) { /* * There may be plenty of free memory available, but it's too * fragmented for high-order allocations. Wake up kcompactd * and rely on compaction_suitable() to determine if it's * needed. If it fails, it will defer subsequent attempts to * ratelimit its work. */ if (!(gfp_flags & __GFP_DIRECT_RECLAIM)) wakeup_kcompactd(pgdat, order, highest_zoneidx); return; }
The function would call compaction once: 1. the reclamation has failed many times 2. the problem comes from external fragmentation
-
-
elixir.bootlin.com elixir.bootlin.com
-
static inline bool should_compact_retry(struct alloc_context *ac, int order, int alloc_flags, enum compact_result compact_result, enum compact_priority *compact_priority, int *compaction_retries) { int max_retries = MAX_COMPACT_RETRIES; int min_priority; bool ret = false; int retries = *compaction_retries; enum compact_priority priority = *compact_priority; if (!order) return false; if (fatal_signal_pending(current)) return false; /* * Compaction was skipped due to a lack of free order-0 * migration targets. Continue if reclaim can help. */ if (compact_result == COMPACT_SKIPPED) { ret = compaction_zonelist_suitable(ac, order, alloc_flags); goto out; } /* * Compaction managed to coalesce some page blocks, but the * allocation failed presumably due to a race. Retry some. */ if (compact_result == COMPACT_SUCCESS) { /* * !costly requests are much more important than * __GFP_RETRY_MAYFAIL costly ones because they are de * facto nofail and invoke OOM killer to move on while * costly can fail and users are ready to cope with * that. 1/4 retries is rather arbitrary but we would * need much more detailed feedback from compaction to * make a better decision. */ if (order > PAGE_ALLOC_COSTLY_ORDER) max_retries /= 4; if (++(*compaction_retries) <= max_retries) { ret = true; goto out; } } /* * Compaction failed. Retry with increasing priority. */ min_priority = (order > PAGE_ALLOC_COSTLY_ORDER) ? MIN_COMPACT_COSTLY_PRIORITY : MIN_COMPACT_PRIORITY; if (*compact_priority > min_priority) { (*compact_priority)--; *compaction_retries = 0; ret = true; } out: trace_compact_retry(order, priority, compact_result, retries, max_retries, ret); return ret; }
This function determines whether the system should retry memory compaction during page allocation. 1. If the allocation order is 0, no need for compaction 2. If compaction was skipped because of a lack of free order-0 pages: Check if memory reclaim can help. 3. If compaction succeeded but allocation still failed: retry 1/4 times. 4. If the compaction failed. retry with increase priority
-
-
elixir.bootlin.com elixir.bootlin.com
-
for (_address = address, _pte = pte; _pte < pte + HPAGE_PMD_NR; _pte++, _address += PAGE_SIZE) { pte_t pteval = ptep_get(_pte); if (is_swap_pte(pteval)) { ++unmapped; if (!cc->is_khugepaged || unmapped <= khugepaged_max_ptes_swap) { /* * Always be strict with uffd-wp * enabled swap entries. Please see * comment below for pte_uffd_wp(). */ if (pte_swp_uffd_wp_any(pteval)) { result = SCAN_PTE_UFFD_WP; goto out_unmap; } continue; } else { result = SCAN_EXCEED_SWAP_PTE; count_vm_event(THP_SCAN_EXCEED_SWAP_PTE); goto out_unmap; } } if (pte_none(pteval) || is_zero_pfn(pte_pfn(pteval))) { ++none_or_zero; if (!userfaultfd_armed(vma) && (!cc->is_khugepaged || none_or_zero <= khugepaged_max_ptes_none)) { continue; } else { result = SCAN_EXCEED_NONE_PTE; count_vm_event(THP_SCAN_EXCEED_NONE_PTE); goto out_unmap; } } if (pte_uffd_wp(pteval)) { /* * Don't collapse the page if any of the small * PTEs are armed with uffd write protection. * Here we can also mark the new huge pmd as * write protected if any of the small ones is * marked but that could bring unknown * userfault messages that falls outside of * the registered range. So, just be simple. */ result = SCAN_PTE_UFFD_WP; goto out_unmap; } if (pte_write(pteval)) writable = true; page = vm_normal_page(vma, _address, pteval); if (unlikely(!page) || unlikely(is_zone_device_page(page))) { result = SCAN_PAGE_NULL; goto out_unmap; } if (page_mapcount(page) > 1) { ++shared; if (cc->is_khugepaged && shared > khugepaged_max_ptes_shared) { result = SCAN_EXCEED_SHARED_PTE; count_vm_event(THP_SCAN_EXCEED_SHARED_PTE); goto out_unmap; } } page = compound_head(page); /* * Record which node the original page is from and save this * information to cc->node_load[]. * Khugepaged will allocate hugepage from the node has the max * hit record. */ node = page_to_nid(page); if (hpage_collapse_scan_abort(node, cc)) { result = SCAN_SCAN_ABORT; goto out_unmap; } cc->node_load[node]++; if (!PageLRU(page)) { result = SCAN_PAGE_LRU; goto out_unmap; } if (PageLocked(page)) { result = SCAN_PAGE_LOCK; goto out_unmap; } if (!PageAnon(page)) { result = SCAN_PAGE_ANON; goto out_unmap; } /* * Check if the page has any GUP (or other external) pins. * * Here the check may be racy: * it may see total_mapcount > refcount in some cases? * But such case is ephemeral we could always retry collapse * later. However it may report false positive if the page * has excessive GUP pins (i.e. 512). Anyway the same check * will be done again later the risk seems low. */ if (!is_refcount_suitable(page)) { result = SCAN_PAGE_COUNT; goto out_unmap; } /* * If collapse was initiated by khugepaged, check that there is * enough young pte to justify collapsing the page */ if (cc->is_khugepaged && (pte_young(pteval) || page_is_young(page) || PageReferenced(page) || mmu_notifier_test_young(vma->vm_mm, address))) referenced++; } if (!writable) { result = SCAN_PAGE_RO; } else if (cc->is_khugepaged && (!referenced || (unmapped && referenced < HPAGE_PMD_NR / 2))) { result = SCAN_LACK_REFERENCED_PAGE; } else { result = SCAN_SUCCEED; }
Check if normal (anonymous) pages can be collapsed
-
xas_for_each(&xas, page, start + HPAGE_PMD_NR - 1) { if (xas_retry(&xas, page)) continue; if (xa_is_value(page)) { ++swap; if (cc->is_khugepaged && swap > khugepaged_max_ptes_swap) { result = SCAN_EXCEED_SWAP_PTE; count_vm_event(THP_SCAN_EXCEED_SWAP_PTE); break; } continue; } /* * TODO: khugepaged should compact smaller compound pages * into a PMD sized page */ if (PageTransCompound(page)) { struct page *head = compound_head(page); result = compound_order(head) == HPAGE_PMD_ORDER && head->index == start /* Maybe PMD-mapped */ ? SCAN_PTE_MAPPED_HUGEPAGE : SCAN_PAGE_COMPOUND; /* * For SCAN_PTE_MAPPED_HUGEPAGE, further processing * by the caller won't touch the page cache, and so * it's safe to skip LRU and refcount checks before * returning. */ break; } node = page_to_nid(page); if (hpage_collapse_scan_abort(node, cc)) { result = SCAN_SCAN_ABORT; break; } cc->node_load[node]++; if (!PageLRU(page)) { result = SCAN_PAGE_LRU; break; } if (page_count(page) != 1 + page_mapcount(page) + page_has_private(page)) { result = SCAN_PAGE_COUNT; break; } /* * We probably should check if the page is referenced here, but * nobody would transfer pte_young() to PageReferenced() for us. * And rmap walk here is just too costly... */ present++; if (need_resched()) { xas_pause(&xas); cond_resched_rcu(); } } rcu_read_unlock(); if (result == SCAN_SUCCEED) { if (cc->is_khugepaged && present < HPAGE_PMD_NR - khugepaged_max_ptes_none) { result = SCAN_EXCEED_NONE_PTE; count_vm_event(THP_SCAN_EXCEED_NONE_PTE); } else { result = collapse_file(mm, addr, file, start, cc); } }
Decide if small file pages should be collapsed. 1. swap pages 2. compound pages 3. Pinned pages
-
- Jan 2025
-
www.theguardian.com www.theguardian.com
-
Der Guardian kritisiert in einem Editorial den Verzicht auf Kernelemente des Green Deal in der europäischen Agrarpolitik, darunter die Nicht-Verabschiedung des Nature Restoration Law. Er verweist auf eine Umfrage, die zeigt, dass eine Mehrheit in Europa eine konsequentere Klimapolitik unterstützt.
Tags
- 2024-04-08
- topic: surveys
- country: Europe
- project: European Green Deal
- process: lowering climate ambition
- event: renouncement to reduce agricultural emissions
- actor: agribusiness
- event: renouncement to halve the use of pesticides
- event: scrapping of changes to the agricultural policy
- actor: European Commission
- law: nature restoration law
- mode: comment
- event: farmers' protests
Annotators
URL
-
-
-
Das EU-Parlament hat die vorgesehenen strengeren ökologischen Vorschriften für Agrarsubventionen verändert. So ist der Erhalt von Subventionen nicht mehr daran geknüpft, dass 4% der bebaubaren Fläche brach liegen. .https://taz.de/EU-und-Ampel-geben-Bauernprotesten-nach/!6004784/
-
-
www.theguardian.com www.theguardian.com
-
Die Ukraine.hat die Pipeline,durch die bisher russisches Gas nach Westeuropa geliefert wurde, unterbrochen. https://www.theguardian.com/world/2025/jan/01/breakaway-moldovan-region-cuts-heating-and-hot-water-as-russia-stops-gas-flowa
CEPA-Report:https://cepa.org/article/betraying-ukraine-for-blood-gas/
Tags
- Gazprom
- Azerbaijan
- Moldova
- Russia
- Nordstream
- date:: 2025-01-01
- author; Shaun Walker
- End of Russian gas deliveries via Ukraine 2025-01-01
- Austria
- Turkstream
- Center for European Policy Analysis (Cepa)
- Weaning off of Russian gas supplies
- Betraying Ukraine for ‘Blood Gas’
- Hungary
- Slovakia
- Ukraine
Annotators
URL
-
- Dec 2024
-
medium.com medium.com
-
why is it that we’re not focusing on those movements as the source of our strength and our organizing? It’s because we have a discourse framed around elite policy institutions that make them the primary actors and the coordination of mostly market mechanisms
for - climate crisis - climate communications - large social movements fizzle out - first framing element - elite policy institutions and businesses are seen as the primary actors - Joe Brewer
-
I feel like sharing with you some of my observations as a frame analyst, as someone who analyzes semantic frames and how they structure a discourse to, in this case, to disempower us and keep us embedded within a conversation that is primarily about the actions of corporations and nation-states and that disengages us from direct grassroots action and taking power into our own hands
for - adjacency / validation - for justifying Tipping Point Festival - TPF - bottom up, grassroots direct action Vs - top down, corporate, policy action - Joe Brewer - framing analysis - using cognitive linguistics
adjacency / validation - between - ustifying Tipping Point Festival - TPF - - bottom up, grassroots direct action<br /> - top down, corporate, policy action<br /> - Joe Brewer - framing analysis - cognitive linguistics - adjacency relationship - We need both bottom up and top down section, but Joe's framing analysis provides an explanation why there isn't more bottom up direct action - It requires a lot of skill to find the leverage points as well as the weakness of people power is lack of money - To awaken the sleeping giant off the commons is the purpose of the Typing Point Festival (TPF)
Tags
- climate crisis - climate communications - large social movements fizzle out - first framing element - elite policy institutions and businesses are seen as the primary actors - Joe Brewer
- validation - for justifying Tipping Point Festival - TPF - bottom up, grassroots direct action Vs - top down, corporate, policy action - Joe Brewer - framing analysis - using cognitive linguistics
Annotators
URL
-
-
bandcamp.com bandcamp.com
-
Bandcamp will not use, and will not permit others to use, any Artist’s Music to train models to generate sound recordings, videos synchronized with sound recordings or other audiovisual works, or musical works embodied within sound recordings and music videos, without that Artist’s express permission.
-
- Nov 2024
-
simpol.org simpol.org
-
for - SIMPOL - SIMultanous POLicy - John Bunzl - SIMPOL - conditional agreement strategy for addressing policy gridlock
-
-
www.youtube.com www.youtube.com
-
that's why they have the chips act because they want to reduce Your Capacity to invest in this super highway and make it attractive for everybody else this is why they are creating circumstances of choking anyone outside the United States wants to trade with China because they don't want this Super Highway way so it's not that China is getting bigger it is not that China is spying it is not Taiwan it is that China has built a digital Cloud Capital based super highway for payments which is a clear and prais danger to the Monopoly of the dollar payment system which is the only reason why the United States is hegemonic
for - key insight - US hegemonic foreign policy - for cold war with China - in order to protect the US global reserve currency - Yanis Varoufakis - Yanis Varoufakis provides a key insight here about the reason for the US cold war with China - Yanis validates his one party claim by saying that the clashing economic fiefdoms of - big tech (Silicon Valley) and - Wall street - are both antagonistic towards China - Biden's Chips Act and - Trump's huge Tariffs - are both continuations of the cold war towards China
-
will that not affect the value of the dollar he said no not as long as it is the only World Reserve currency the only currency that has demand people demand it even if they don't want to buy anything from the country which is producing it which is printing it
for - key strategy - US foreign policy - US dollar don't devalue as long as it is the world's reserve currency - even if they don't want to buy from you - Yanis Varoufakis
-
one man in his half a page which I actually acquired in the process of writing a book 15 years ago typ written a typewritten half a page he said what we must do we must treble our deficit treble our deficit we have a deficit which is bad we must make it three times as big and make the capitalists of the rest of the world pay for it which is exactly what happened the United States should increase its deficit and use it to create aggregate demand for the net exports of Germany and Japan and later on China
for - US foreign policy - National Security Council member suggested - triple the deficit too act as a magnet to draw in experts of other countries - Yanis Varoufakis
-
why did the Clinton Administration and the Bush Administration after that were so gangho about trading with China why did they not start the new Cold War against China in the 1990s in the year 2000 in 2004 2005 200 8 why was it only around 2014 that this establishment decided to unleash the war against China
for - key insight - key question - why did US foreign policy against China switch only in 2014? - Yanis Varoufakis
-
the whole point of the Nixon Administration was to split the Soviet Union from China and therefore win the Cold War so they're critical of the support of Ukraine and of Israel because they think that this simply disorient the United States policy
for - further research - UD foreign policy - Ukraine - Israel - China - Russia - Nixon - Yanis Varoufakis
Tags
- key strategy - US foreign policy - US dollar don't devalue as long as it is the world's reserve currency - even if they don't want to buy from you - Yanis Varoufakis
- US foreign policy - National Security Council member suggested - triple the deficit too act as a magnet to draw in experts of other countries - Yanis Varoufakis
- - further research - UD foreign policy - Ukraine - Israel - China - Russia - Nixon - Yanis Varoufakis
- key insight - key question - why did US foreign policy against China switch only in 2014? - Yanis Varoufakis
- key insight - US hegemonic foreign policy - for cold war with China - in order to protect the US global reserve currency - Yanis Varoufakis
Annotators
URL
-
-
-
TRSP Desirable Characteristics
Policy that details how the preservation of the data is ensured: does the repository have a page, or document that describes this?
Tags
Annotators
URL
-
-
-
TRSP Desirable Characteristics
Policies that explain the repository’s commitment and processes that ensure the long-term preservation, fitness, and availability of datasets.
-
TRSP Desirable Characteristics
Policies for who can view and access a dataset and under what conditions.
-
TRSP Desirable Characteristics
Policies that explain what datasets the repository will accept for deposit, from whom, and under what conditions, including costs.
-
-
elixir.bootlin.com elixir.bootlin.com
-
#ifdef CONFIG_ARCH_HAS_HUGEPD static unsigned long hugepte_addr_end(unsigned long addr, unsigned long end, unsigned long sz) { unsigned long __boundary = (addr + sz) & ~(sz-1); return (__boundary - 1 < end - 1) ? __boundary : end; } static int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long pte_end; struct page *page; struct folio *folio; pte_t pte; int refs; pte_end = (addr + sz) & ~(sz-1); if (pte_end < end) end = pte_end; pte = huge_ptep_get(ptep); if (!pte_access_permitted(pte, flags & FOLL_WRITE)) return 0; /* hugepages are never "special" */ VM_BUG_ON(!pfn_valid(pte_pfn(pte))); page = nth_page(pte_page(pte), (addr & (sz - 1)) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pte_val(pte) != pte_val(ptep_get(ptep)))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pte_write(pte) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pd(hugepd_t hugepd, unsigned long addr, unsigned int pdshift, unsigned long end, unsigned int flags, struct page **pages, int *nr) { pte_t *ptep; unsigned long sz = 1UL << hugepd_shift(hugepd); unsigned long next; ptep = hugepte_offset(hugepd, addr, pdshift); do { next = hugepte_addr_end(addr, end, sz); if (!gup_hugepte(ptep, sz, addr, end, flags, pages, nr)) return 0; } while (ptep++, addr = next, addr != end); return 1; } #else static inline int gup_huge_pd(hugepd_t hugepd, unsigned long addr, unsigned int pdshift, unsigned long end, unsigned int flags, struct page **pages, int *nr) { return 0; } #endif /* CONFIG_ARCH_HAS_HUGEPD */ static int gup_huge_pmd(pmd_t orig, pmd_t *pmdp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { struct page *page; struct folio *folio; int refs; if (!pmd_access_permitted(orig, flags & FOLL_WRITE)) return 0; if (pmd_devmap(orig)) { if (unlikely(flags & FOLL_LONGTERM)) return 0; return __gup_device_huge_pmd(orig, pmdp, addr, end, flags, pages, nr); } page = nth_page(pmd_page(orig), (addr & ~PMD_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pmd_val(orig) != pmd_val(*pmdp))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pmd_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pud(pud_t orig, pud_t *pudp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { struct page *page; struct folio *folio; int refs; if (!pud_access_permitted(orig, flags & FOLL_WRITE)) return 0; if (pud_devmap(orig)) { if (unlikely(flags & FOLL_LONGTERM)) return 0; return __gup_device_huge_pud(orig, pudp, addr, end, flags, pages, nr); } page = nth_page(pud_page(orig), (addr & ~PUD_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pud_val(orig) != pud_val(*pudp))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pud_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pgd(pgd_t orig, pgd_t *pgdp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { int refs; struct page *page; struct folio *folio; if (!pgd_access_permitted(orig, flags & FOLL_WRITE)) return 0; BUILD_BUG_ON(pgd_devmap(orig)); page = nth_page(pgd_page(orig), (addr & ~PGDIR_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pgd_val(orig) != pgd_val(*pgdp))) { gup_put_folio(folio, refs, flags); return 0; } if (!pgd_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_pmd_range(pud_t *pudp, pud_t pud, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pmd_t *pmdp; pmdp = pmd_offset_lockless(pudp, pud, addr); do { pmd_t pmd = pmdp_get_lockless(pmdp); next = pmd_addr_end(addr, end); if (!pmd_present(pmd)) return 0; if (unlikely(pmd_trans_huge(pmd) || pmd_huge(pmd) || pmd_devmap(pmd))) { /* See gup_pte_range() */ if (pmd_protnone(pmd)) return 0; if (!gup_huge_pmd(pmd, pmdp, addr, next, flags, pages, nr)) return 0; } else if (unlikely(is_hugepd(__hugepd(pmd_val(pmd))))) { /* * architecture have different format for hugetlbfs * pmd format and THP pmd format */ if (!gup_huge_pd(__hugepd(pmd_val(pmd)), addr, PMD_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pte_range(pmd, pmdp, addr, next, flags, pages, nr)) return 0; } while (pmdp++, addr = next, addr != end); return 1; } static int gup_pud_range(p4d_t *p4dp, p4d_t p4d, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pud_t *pudp; pudp = pud_offset_lockless(p4dp, p4d, addr); do { pud_t pud = READ_ONCE(*pudp); next = pud_addr_end(addr, end); if (unlikely(!pud_present(pud))) return 0; if (unlikely(pud_huge(pud) || pud_devmap(pud))) { if (!gup_huge_pud(pud, pudp, addr, next, flags, pages, nr)) return 0; } else if (unlikely(is_hugepd(__hugepd(pud_val(pud))))) { if (!gup_huge_pd(__hugepd(pud_val(pud)), addr, PUD_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pmd_range(pudp, pud, addr, next, flags, pages, nr)) return 0; } while (pudp++, addr = next, addr != end); return 1; } static int gup_p4d_range(pgd_t *pgdp, pgd_t pgd, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; p4d_t *p4dp; p4dp = p4d_offset_lockless(pgdp, pgd, addr); do { p4d_t p4d = READ_ONCE(*p4dp); next = p4d_addr_end(addr, end); if (p4d_none(p4d)) return 0; BUILD_BUG_ON(p4d_huge(p4d)); if (unlikely(is_hugepd(__hugepd(p4d_val(p4d))))) { if (!gup_huge_pd(__hugepd(p4d_val(p4d)), addr, P4D_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pud_range(p4dp, p4d, addr, next, flags, pages, nr)) return 0; } while (p4dp++, addr = next, addr != end); return 1; } static void gup_pgd_range(unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pgd_t *pgdp; pgdp = pgd_offset(current->mm, addr); do { pgd_t pgd = READ_ONCE(*pgdp); next = pgd_addr_end(addr, end); if (pgd_none(pgd)) return; if (unlikely(pgd_huge(pgd))) { if (!gup_huge_pgd(pgd, pgdp, addr, next, flags, pages, nr)) return; } else if (unlikely(is_hugepd(__hugepd(pgd_val(pgd))))) { if (!gup_huge_pd(__hugepd(pgd_val(pgd)), addr, PGDIR_SHIFT, next, flags, pages, nr)) return; } else if (!gup_p4d_range(pgdp, pgd, addr, next, flags, pages, nr)) return; } while (pgdp++, addr = next, addr != end); } #else static inline void gup_pgd_range(unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { }
policy use functions for gup_huge pte policy code function above (not right above, gotta scroll probably to find it)
-
static int internal_get_user_pages_fast(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages) { unsigned long len, end; unsigned long nr_pinned; int locked = 0; int ret; if (WARN_ON_ONCE(gup_flags & ~(FOLL_WRITE | FOLL_LONGTERM | FOLL_FORCE | FOLL_PIN | FOLL_GET | FOLL_FAST_ONLY | FOLL_NOFAULT | FOLL_PCI_P2PDMA | FOLL_HONOR_NUMA_FAULT))) return -EINVAL; if (gup_flags & FOLL_PIN) mm_set_has_pinned_flag(¤t->mm->flags); if (!(gup_flags & FOLL_FAST_ONLY)) might_lock_read(¤t->mm->mmap_lock); start = untagged_addr(start) & PAGE_MASK; len = nr_pages << PAGE_SHIFT; if (check_add_overflow(start, len, &end)) return -EOVERFLOW; if (end > TASK_SIZE_MAX) return -EFAULT; if (unlikely(!access_ok((void __user *)start, len))) return -EFAULT; nr_pinned = lockless_pages_from_mm(start, end, gup_flags, pages); if (nr_pinned == nr_pages || gup_flags & FOLL_FAST_ONLY) return nr_pinned; /* Slow path: try to get the remaining pages with get_user_pages */ start += nr_pinned << PAGE_SHIFT; pages += nr_pinned; ret = __gup_longterm_locked(current->mm, start, nr_pages - nr_pinned, pages, &locked, gup_flags | FOLL_TOUCH | FOLL_UNLOCKABLE); if (ret < 0) { /* * The caller has to unpin the pages we already pinned so * returning -errno is not an option */ if (nr_pinned) return nr_pinned; return ret; } return ret + nr_pinned; } /** * get_user_pages_fast_only() - pin user pages in memory * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Like get_user_pages_fast() except it's IRQ-safe in that it won't fall back to * the regular GUP. * * If the architecture does not support this function, simply return with no * pages pinned. * * Careful, careful! COW breaking can go either way, so a non-write * access can get ambiguous page results. If you call this function without * 'write' set, you'd better be sure that you're ok with that ambiguity. */ int get_user_pages_fast_only(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { /* * Internally (within mm/gup.c), gup fast variants must set FOLL_GET, * because gup fast is always a "pin with a +1 page refcount" request. * * FOLL_FAST_ONLY is required in order to match the API description of * this routine: no fall back to regular ("slow") GUP. */ if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_GET | FOLL_FAST_ONLY)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(get_user_pages_fast_only); /** * get_user_pages_fast() - pin user pages in memory * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Attempt to pin user pages in memory without taking mm->mmap_lock. * If not successful, it will fall back to taking the lock and * calling get_user_pages(). * * Returns number of pages pinned. This may be fewer than the number requested. * If nr_pages is 0 or negative, returns 0. If no pages were pinned, returns * -errno. */ int get_user_pages_fast(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { /* * The caller may or may not have explicitly set FOLL_GET; either way is * OK. However, internally (within mm/gup.c), gup fast variants must set * FOLL_GET, because gup fast is always a "pin with a +1 page refcount" * request. */ if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_GET)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(get_user_pages_fast); /** * pin_user_pages_fast() - pin user pages in memory without taking locks * * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Nearly the same as get_user_pages_fast(), except that FOLL_PIN is set. See * get_user_pages_fast() for documentation on the function arguments, because * the arguments here are identical. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for further details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page() will not remove pins from it. */ int pin_user_pages_fast(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(pin_user_pages_fast); /** * pin_user_pages_remote() - pin pages of a remote process * * @mm: mm_struct of target mm * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying lookup behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * @locked: pointer to lock flag indicating whether lock is held and * subsequently whether VM_FAULT_RETRY functionality can be * utilised. Lock must initially be held. * * Nearly the same as get_user_pages_remote(), except that FOLL_PIN is set. See * get_user_pages_remote() for documentation on the function arguments, because * the arguments here are identical. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages_remote(struct mm_struct *mm, unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages, int *locked) { int local_locked = 1; if (!is_valid_gup_args(pages, locked, &gup_flags, FOLL_PIN | FOLL_TOUCH | FOLL_REMOTE)) return 0; return __gup_longterm_locked(mm, start, nr_pages, pages, locked ? locked : &local_locked, gup_flags); } EXPORT_SYMBOL(pin_user_pages_remote); /** * pin_user_pages() - pin user pages in memory for use by other devices * * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying lookup behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Nearly the same as get_user_pages(), except that FOLL_TOUCH is not set, and * FOLL_PIN is set. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages) { int locked = 1; if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN)) return 0; return __gup_longterm_locked(current->mm, start, nr_pages, pages, &locked, gup_flags); } EXPORT_SYMBOL(pin_user_pages); /* * pin_user_pages_unlocked() is the FOLL_PIN variant of * get_user_pages_unlocked(). Behavior is the same, except that this one sets * FOLL_PIN and rejects FOLL_GET. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages_unlocked(unsigned long start, unsigned long nr_pages, struct page **pages, unsigned int gup_flags) { int locked = 0; if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN | FOLL_TOUCH | FOLL_UNLOCKABLE)) return 0; return __gup_longterm_locked(current->mm, start, nr_pages, pages, &locked, gup_flags); }
fast gup functions
-
/** * unpin_user_pages() - release an array of gup-pinned pages. * @pages: array of pages to be marked dirty and released. * @npages: number of pages in the @pages array. * * For each page in the @pages array, release the page using unpin_user_page(). * * Please see the unpin_user_page() documentation for details. */ void unpin_user_pages(struct page **pages, unsigned long npages) { unsigned long i; struct folio *folio; unsigned int nr; /* * If this WARN_ON() fires, then the system *might* be leaking pages (by * leaving them pinned), but probably not. More likely, gup/pup returned * a hard -ERRNO error to the caller, who erroneously passed it here. */ if (WARN_ON(IS_ERR_VALUE(npages))) return; sanity_check_pinned_pages(pages, npages); for (i = 0; i < npages; i += nr) { folio = gup_folio_next(pages, npages, i, &nr); gup_put_folio(folio, nr, FOLL_PIN); } }
gup unpin function, not actual logic
-
void unpin_user_page_range_dirty_lock(struct page *page, unsigned long npages, bool make_dirty) { unsigned long i; struct folio *folio; unsigned int nr; for (i = 0; i < npages; i += nr) { folio = gup_folio_range_next(page, npages, i, &nr); if (make_dirty && !folio_test_dirty(folio)) { folio_lock(folio); folio_mark_dirty(folio); folio_unlock(folio); } gup_put_folio(folio, nr, FOLL_PIN); } }
unpin logic but for dirty pages
-
static void __maybe_unused undo_dev_pagemap(int *nr, int nr_start, unsigned int flags, struct page **pages) { while ((*nr) - nr_start) { struct page *page = pages[--(*nr)]; ClearPageReferenced(page); if (flags & FOLL_PIN) unpin_user_page(page); else put_page(page); } }
policy use function that undoes mapping
-
#ifdef CONFIG_STACK_GROWSUP return vma_lookup(mm, addr); #else static volatile unsigned long next_warn; struct vm_area_struct *vma; unsigned long now, next; vma = find_vma(mm, addr); if (!vma || (addr >= vma->vm_start)) return vma; /* Only warn for half-way relevant accesses */ if (!(vma->vm_flags & VM_GROWSDOWN)) return NULL; if (vma->vm_start - addr > 65536) return NULL; /* Let's not warn more than once an hour.. */ now = jiffies; next = next_warn; if (next && time_before(now, next)) return NULL; next_warn = now + 60*60*HZ; /* Let people know things may have changed. */ pr_warn("GUP no longer grows the stack in %s (%d): %lx-%lx (%lx)\n", current->comm, task_pid_nr(current), vma->vm_start, vma->vm_end, addr); dump_stack(); return NULL;
helper func to lookup vma(virtual mem area) that warns per hour about half way relevant acc and changes in stack
-
void unpin_user_pages_dirty_lock(struct page **pages, unsigned long npages, bool make_dirty) { unsigned long i; struct folio *folio; unsigned int nr; if (!make_dirty) { unpin_user_pages(pages, npages); return; } sanity_check_pinned_pages(pages, npages); for (i = 0; i < npages; i += nr) { folio = gup_folio_next(pages, npages, i, &nr); /* * Checking PageDirty at this point may race with * clear_page_dirty_for_io(), but that's OK. Two key * cases: * * 1) This code sees the page as already dirty, so it * skips the call to set_page_dirty(). That could happen * because clear_page_dirty_for_io() called * page_mkclean(), followed by set_page_dirty(). * However, now the page is going to get written back, * which meets the original intention of setting it * dirty, so all is well: clear_page_dirty_for_io() goes * on to call TestClearPageDirty(), and write the page * back. * * 2) This code sees the page as clean, so it calls * set_page_dirty(). The page stays dirty, despite being * written back, so it gets written back again in the * next writeback cycle. This is harmless. */ if (!folio_test_dirty(folio)) { folio_lock(folio); folio_mark_dirty(folio); folio_unlock(folio); } gup_put_folio(folio, nr, FOLL_PIN); } }
unpins and dirties page
-
static inline struct folio *gup_folio_next(struct page **list, unsigned long npages, unsigned long i, unsigned int *ntails) { struct folio *folio = page_folio(list[i]); unsigned int nr; for (nr = i + 1; nr < npages; nr++) { if (page_folio(list[nr]) != folio) break; } *ntails = nr - i; return folio; }
gets folio of next page along with reference to end of folio
-
static inline struct folio *gup_folio_range_next(struct page *start, unsigned long npages, unsigned long i, unsigned int *ntails) { struct page *next = nth_page(start, i); struct folio *folio = page_folio(next); unsigned int nr = 1; if (folio_test_large(folio)) nr = min_t(unsigned int, npages - i, folio_nr_pages(folio) - folio_page_idx(folio, next)); *ntails = nr; return folio; }
gets the folio of the next page from start to 'i' range. also gets the tail folio/reference
-
void unpin_user_page(struct page *page) { sanity_check_pinned_pages(&page, 1); gup_put_folio(page_folio(page), 1, FOLL_PIN); } EXPORT_SYMBOL(unpin_user_page);
actual policy use logic
-
if (!put_devmap_managed_page_refs(&folio->page, refs)) folio_put_refs(folio, refs);
Definitely a vital and straightforward policy use section of gup that simples places a reference on the folio
-
if (flags & FOLL_PIN) { if (is_zero_folio(folio)) return; node_stat_mod_folio(folio, NR_FOLL_PIN_RELEASED, refs); if (folio_test_large(folio)) atomic_sub(refs, &folio->_pincount); else refs *= GUP_PIN_COUNTING_BIAS; }
Checks if the folio is zero/large
-
if (folio_test_large(folio)) atomic_add(refs, &folio->_pincount); else folio_ref_add(folio, refs * (GUP_PIN_COUNTING_BIAS - 1))
maintaining reference counts. Part of policy logic most likely
-
-
www.nytimes.com www.nytimes.com
-
Die New York Times über die Pläne des Trump-Teams zur Beendigung der Klimapolitik der Biden-Administration. Dazu gehören der Austritt aus dem Pariser Abkommen, die Verlagerung (zwecks Entmachtung) der Environmental Protection Agency und die Aufhebung des Verbots von Bohrungen in bisherIgen Naturschutzgebieten und Territorien von Native Americans. https://www.nytimes.com/2024/11/08/climate/trump-transition-epa-interior-energy.html
-
-
Local file Local file
-
Desmond, Matthew. Poverty, by America. 1st ed. New York: Crown, 2023. https://amzn.to/40Aqzlp
Annotation URL: urn:x-pdf:eefd847a2a1723651d1d863de5153292
Alternate annotation link: https://jonudell.info/h/facet/?user=chrisaldrich&max=100&exactTagSearch=true&expanded=true&url=urn%3Ax-pdf%3Aeefd847a2a1723651d1d863de5153292
Tags
- policy
- deconcentrating poverty
- payday loan industry
- Democrats
- poverty prevention
- capitalism
- sociology
- Black Americans
- universal basic income (UBI)
- wage stagnation
- landlords
- taxes
- Low Income Housing Tax Credit (LIHTC)
- means-tested transfer programs
- National Labor Relations Act
- poverty
- Children’s Health Insurance Program (CHIP)
- Earned Income Tax Credit (EITC)
- War on Poverty
- neighborhoods
- opportunity hoarding
- mortgages
- toxic capitalism
- Mollie Orshansky
- opportunity
- Matthew Desmond
- poverty abolitionism
- wages
- Poverty, by America
- Dan Allosso Book Club
- empowerment
- welfare
- food stamps
- eviction
- unemployment insurance
- labor market
- work
- class
- buy-now-pay-later (BNPL) companies
- workforce
- welfare system
- opportunity commodification
- minimum wage
- housing market
- child poverty
- zoning laws
- Dan Allosso Book Club 2024-11-09
- References
- taxing the poor
- banking sector
- unions
- Ronald Reagan
Annotators
-
- Oct 2024
-
jabberwocking.com jabberwocking.com
-
www.theguardian.com www.theguardian.com
-
2023 haben Böden und Landpflanzen fast kein CO2 absorbiert. Dieser Kollaps der Landsenken vor allem durch Dürren und Waldbrände wurde in diesem Ausmaß kaum vorausgesehen, und es ist nicht klar, ob auf ihn eine Regeneration folgt. Er stellt Klimamodelle ebenso in Frage wie die meisten nationalen Pläne zum Erreichen von CO2-Neutralität, weil sie auf natürlichen Senken an Land beruhen. Es gibt Anzeichen dafür, dass die steigenden Temperaturen inzwischen auch die CO2-Aufnahmefähigkeit der Meere schwächen. Überblicksartikel mit Links zu Studien https://www.theguardian.com/environment/2024/oct/14/nature-carbon-sink-collapse-global-heating-models-emissions-targets-evidence-aoe
Tags
- Johan Rockström
- The role of forests in the EU climate policy: are we on the right track?
- The enduring world forest carbon sink
- by: Patrick Greenfield
- Low latency carbon budget analysis reveals a large decline of the land carbon sink in 2023
- date::2024-10-14
- Philippe Ciais
- Andrew Watson
- Global Carbon Budget
- Schwächung der terrestrischen Kohlenstoffsenken
- French Laboratory of Climate and Environmental Sciences
- 2023
- Impact of high temperature heat waves on ocean carbon sinks: Based on literature analysis perspective
- A warming climate will make Australian soil a net emitter of atmospheric CO2
- Pierre Friedlingstein
- Schwächung der marinen Kohlenstoffsenken
- Tim Lenton
Annotators
URL
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (dtc->wb_thresh < 2 * wb_stat_error()) { wb_reclaimable = wb_stat_sum(wb, WB_RECLAIMABLE); dtc->wb_dirty = wb_reclaimable + wb_stat_sum(wb, WB_WRITEBACK); } else { wb_reclaimable = wb_stat(wb, WB_RECLAIMABLE); dtc->wb_dirty = wb_reclaimable + wb_stat(wb, WB_WRITEBACK); }
This is a configuration policy that does a more accurate calculation on the number of reclaimable pages and dirty pages when the threshold for the dirty pages in the writeback context is lower than 2 times the maximal error of a stat counter.
-
static long wb_min_pause(struct bdi_writeback *wb, long max_pause, unsigned long task_ratelimit, unsigned long dirty_ratelimit, int *nr_dirtied_pause
This function is an algorithmic policy that determines the minimum throttle time for a process between consecutive writeback operations for dirty pages based on heuristics. It is used for balancing the load of the I/O subsystems so that there will not be excessive I/O operations that impact the performance of the system.
-
if (!laptop_mode && nr_reclaimable > gdtc->bg_thresh && !writeback_in_progress(wb)) wb_start_background_writeback(wb);
This is a configuration policy that determines whether to start background writeout. The code here indicates that if laptop_mode, which will reduce disk activity for power saving, is not set, then when the number of dirty pages reaches the bg_thresh threshold, the system starts writing back pages.
-
if (thresh > dirty) return 1UL << (ilog2(thresh - dirty) >> 1);
This implements a configuration policy that determines the interval for the kernel to wake up and check for dirty pages that need to be written back to disk.
-
limit -= (limit - thresh) >> 5;
This is a configuration policy that determines how much should the limit be updated. The limit controls the amount of dirty memory allowed in the system.
-
if (dirty <= dirty_freerun_ceiling(thresh, bg_thresh) && (!mdtc || m_dirty <= dirty_freerun_ceiling(m_thresh, m_bg_thresh))) { unsigned long intv; unsigned long m_intv; free_running: intv = dirty_poll_interval(dirty, thresh); m_intv = ULONG_MAX; current->dirty_paused_when = now; current->nr_dirtied = 0; if (mdtc) m_intv = dirty_poll_interval(m_dirty, m_thresh); current->nr_dirtied_pause = min(intv, m_intv); break; } /* Start writeback even when in laptop mode */ if (unlikely(!writeback_in_progress(wb))) wb_start_background_writeback(wb); mem_cgroup_flush_foreign(wb); /* * Calculate global domain's pos_ratio and select the * global dtc by default. */ if (!strictlimit) { wb_dirty_limits(gdtc); if ((current->flags & PF_LOCAL_THROTTLE) && gdtc->wb_dirty < dirty_freerun_ceiling(gdtc->wb_thresh, gdtc->wb_bg_thresh)) /* * LOCAL_THROTTLE tasks must not be throttled * when below the per-wb freerun ceiling. */ goto free_running; } dirty_exceeded = (gdtc->wb_dirty > gdtc->wb_thresh) && ((gdtc->dirty > gdtc->thresh) || strictlimit); wb_position_ratio(gdtc); sdtc = gdtc; if (mdtc) { /* * If memcg domain is in effect, calculate its * pos_ratio. @wb should satisfy constraints from * both global and memcg domains. Choose the one * w/ lower pos_ratio. */ if (!strictlimit) { wb_dirty_limits(mdtc); if ((current->flags & PF_LOCAL_THROTTLE) && mdtc->wb_dirty < dirty_freerun_ceiling(mdtc->wb_thresh, mdtc->wb_bg_thresh)) /* * LOCAL_THROTTLE tasks must not be * throttled when below the per-wb * freerun ceiling. */ goto free_running; } dirty_exceeded |= (mdtc->wb_dirty > mdtc->wb_thresh) && ((mdtc->dirty > mdtc->thresh) || strictlimit); wb_position_ratio(mdtc); if (mdtc->pos_ratio < gdtc->pos_ratio) sdtc = mdtc; }
This is an algorithmic policy that determines whether the process can run freely or a throttle is needed to control the rate of the writeback by checking if the number of dirty pages exceed the average of the global threshold and background threshold.
-
shift = dirty_ratelimit / (2 * step + 1); if (shift < BITS_PER_LONG) step = DIV_ROUND_UP(step >> shift, 8); else step = 0; if (dirty_ratelimit < balanced_dirty_ratelimit) dirty_ratelimit += step; else dirty_ratelimit -= step;
This is a configuration policy that determines how much we should increase/decrease the dirty_ratelimit, which controls the rate that processors write dirty pages back to storage.
-
ratelimit_pages = dirty_thresh / (num_online_cpus() * 32); if (ratelimit_pages < 16) ratelimit_pages = 16;
This is a configuration policy that dynamically determines the rate that kernel can write dirty pages back to storage in a single writeback cycle.
-
t = wb_dirty / (1 + bw / roundup_pow_of_two(1 + HZ / 8));
This implements a configuration policy that determines the maximum time that the kernel should wait between writeback operations for dirty pages. This ensures that dirty pages are flushed to disk within a reasonable time frame and control the risk of data loss in case of a system crash.
-
if (IS_ENABLED(CONFIG_CGROUP_WRITEBACK) && mdtc) {
This is a configuration policy that controls whether to update the limit in the control group. The config enables support for controlling the writeback of dirty pages on a per-cgroup basis in the Linux kernel. This allows for better resource management and improved performance.
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (si->cluster_info) { if (!scan_swap_map_try_ssd_cluster(si, &offset, &scan_base)) goto scan; } else if (unlikely(!si->cluster_nr--)) {
Algorithmic policy decision: If SSD, use SSD wear-leveling friendly algorithm. Otherwise, use HDD algo which minimizes seek times. Potentially, certain access patterns may make one of these algorithms less effective (i.e. in the case of wear leveling, the swap is constantly full)
-
scan_base = offset = si->lowest_bit; last_in_cluster = offset + SWAPFILE_CLUSTER - 1; /* Locate the first empty (unaligned) cluster */ for (; last_in_cluster <= si->highest_bit; offset++) { if (si->swap_map[offset]) last_in_cluster = offset + SWAPFILE_CLUSTER; else if (offset == last_in_cluster) { spin_lock(&si->lock); offset -= SWAPFILE_CLUSTER - 1; si->cluster_next = offset; si->cluster_nr = SWAPFILE_CLUSTER - 1; goto checks; } if (unlikely(--latency_ration < 0)) { cond_resched(); latency_ration = LATENCY_LIMIT; } }
Here, (when using HDDs), a policy is implemented that places the swapped page in the first available slot. This is supposed to reduce seek time in spinning drives, as it encourages having swap entries near each other.
-
/* * Even if there's no free clusters available (fragmented), * try to scan a little more quickly with lock held unless we * have scanned too many slots already. */ if (!scanned_many) { unsigned long scan_limit; if (offset < scan_base) scan_limit = scan_base; else scan_limit = si->highest_bit; for (; offset <= scan_limit && --latency_ration > 0; offset++) { if (!si->swap_map[offset]) goto checks; } }
Here we have a configuration policy where we do another smaller scan as long as we haven't exhausted our latency_ration. Another alternative could be yielding early in anticipation that we aren't going to find a free slot.
-
/* * select a random position to start with to help wear leveling * SSD */ for_each_possible_cpu(cpu) { per_cpu(*p->cluster_next_cpu, cpu) = get_random_u32_inclusive(1, p->highest_bit); }
An algorithmic (random) policy is used here to spread swap pages around an SSD to help with wear leveling instead of writing to the same area of an SSD often.
-
cluster_list_add_tail(&si->discard_clusters, si->cluster_info, idx);
A policy decision is made to add a cluster to the discard list on a first-come, first-served basis. However, this approach could be enhanced by prioritizing certain clusters higher on the list based on their 'importance.' This 'importance' could be defined by how closely a cluster is related to other pages in the swap. By doing so, the system can reduce seek time as mentioned on line 817.
-
if (unlikely(--latency_ration < 0)) { cond_resched(); latency_ration = LATENCY_LIMIT; scanned_many = true; } if (swap_offset_available_and_locked(si, offset)) goto checks; } offset = si->lowest_bit; while (offset < scan_base) { if (unlikely(--latency_ration < 0)) { cond_resched(); latency_ration = LATENCY_LIMIT; scanned_many = true; }
Here, a policy decision is made to fully replenish the latency_ration with the LATENCY_LIMIT and then yield back to the scheduler if we've exhausted it. This makes it so that when scheduled again, we have the full LATENCY_LIMIT to do a scan. Alternative policies could grow/shrink this to find a better heuristic instead of fully replenishing each time.
Marked config/value as awe're replacing latency_ration with a compiletime-defined limit.
-
while (scan_swap_map_ssd_cluster_conflict(si, offset)) { /* take a break if we already got some slots */ if (n_ret) goto done; if (!scan_swap_map_try_ssd_cluster(si, &offset, &scan_base)) goto scan;
Here, a policy decision is made to stop scanning if some slots were already found. Other policy decisions could be made to keep scanning or take into account how long the scan took or how many pages were found.
-
else if (!cluster_list_empty(&si->discard_clusters)) { /* * we don't have free cluster but have some clusters in * discarding, do discard now and reclaim them, then * reread cluster_next_cpu since we dropped si->lock */ swap_do_scheduled_discard(si); *scan_base = this_cpu_read(*si->cluster_next_cpu); *offset = *scan_base; goto new_cluster;
This algorithmic policy discards + reclaims pages as-needed whenever there is no free cluster. Other policies could be explored that do this preemptively in order to avoid the cost of doing it here.
-
#ifdef CONFIG_THP_SWAP
This is a build-time flag that configures how hugepages are handled when swapped. When defined, it swaps them in one piece, while without it splits them into smaller units and swaps those units.
-
if (swap_flags & SWAP_FLAG_DISCARD_ONCE) p->flags &= ~SWP_PAGE_DISCARD; else if (swap_flags & SWAP_FLAG_DISCARD_PAGES) p->flags &= ~SWP_AREA_DISCARD
This is a configuration policy decision where a sysadmin can pass flags to sys_swapon() to control the behavior discards are handled. If DISCARD_ONCE is set, a flag which "discard[s] swap area at swapon-time" is unset, and if DISCARD_PAGES is set, a flag which "discard[s] page-clusters after use" is unset.
-
-
elixir.bootlin.com elixir.bootlin.com
-
randomize_stack_top
This function uses a configuration policy to enable Address Space Layout Randomization (ASLR) for a specific process if PF_RANDOMIZE flag is set. It randomly arranges the positions of stack of a process to help defend certain attacks by making memory addresses unpredictable.
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (prev_class) { if (can_merge(prev_class, pages_per_zspage, objs_per_zspage)) { pool->size_class[i] = prev_class; continue; } }
This is an algorithmic policy. A
zs_poolmaintainszs_pages of differentsize_class. However, somesize_classes share exactly same characteristics, namelypages_per_zspageandobjs_per_zspage. Recall the other annotation of mine, it searched freezspages bysize_class:zspage = find_get_zspage(class);. Thus, grouping different classes improves memory utilization. -
zspage = find_get_zspage(class); if (likely(zspage)) { obj = obj_malloc(pool, zspage, handle); /* Now move the zspage to another fullness group, if required */ fix_fullness_group(class, zspage); record_obj(handle, obj); class_stat_inc(class, ZS_OBJS_INUSE, 1); goto out; }
This is an algorithmic policy. Instead of immediately allocating new zspages for each memory request, the algorithm first attempts to find and reuse existing partially filled zspages from a given size class by invoking the find_get_zspage(class) function. It also updates the corresponding fullness groups.
-
-
elixir.bootlin.com elixir.bootlin.com
-
1
This is a configuration policy that sets the timeout between retries if vmap_pages_range() fails. This could be tunable variable.
-
if (!(flags & VM_ALLOC)) area->addr = kasan_unpoison_vmalloc(area->addr, requested_size, KASAN_VMALLOC_PROT_NORMAL);
This is an algorithmic policy. This is an optimization that prevents duplicate marks of accessibility. Only pages allocated without
VM_ALLOC(e.g. ioremap) was not set accessible (unpoison), thus requiring explicit setting here. -
100U
This is an configuration policy that determines 100 pages are the upper limit for the bulk-allocator. However, the implementation of
alloc_pages_bulk_array_mempolicydoes not explicitly limit in the implementation. So I believe it is an algorithmic policy related to some sort of optimization. -
if (!order) {
This is an algorithmic policy determines that only use the bulk allocator for order-0 pages (non-super pages). Maybe the bulk allocator could be applied to super pages to speed up allocation. Currently I haven't seen the reason why it cannot be applied.
-
if (likely(count <= VMAP_MAX_ALLOC)) { mem = vb_alloc(size, GFP_KERNEL); if (IS_ERR(mem)) return NULL; addr = (unsigned long)mem; } else { struct vmap_area *va; va = alloc_vmap_area(size, PAGE_SIZE, VMALLOC_START, VMALLOC_END, node, GFP_KERNEL, VMAP_RAM); if (IS_ERR(va)) return NULL; addr = va->va_start; mem = (void *)addr; }
This is an algorithmic policy that determines whether to use a more efficient
vl_allocwhich does not involve complex virtual-to-physical mappings. Unlike the latteralloc_vmap_area,vb_allocdoes not need to traverse the rb-tree of free vmap areas. It simply find a larger enough block fromvmap_block_queue. -
VMAP_PURGE_THRESHOLD
The threshold VMAP_PURGE_THRESHOLD is a configuration policy that could be tuned by machine learning. Setting this threshold lower reduces purging activities while setting it higher reduces framentation.
-
if (!(force_purge
This is an algorithmic policy that prevents purging blocks with considerable amount of "usable memory" unless requested with force_purge.
-
resched_threshold = lazy_max_pages() << 1;
The assignment of resched_threshold and lines 1776-1777 are configuration policies to determine fewer than which number of lazily-freed pages it should yield CPU temporarily to higher-priority tasks.
-
log = fls(num_online_cpus());
This heuristic scales lazy_max_pages logarithmically, which is a configuration policy. Alternatively, machine learning could determine the optimal scaling function—whether linear, logarithmic, square-root, or another approach.
-
32UL * 1024 * 1024
This is a configuration policy that decides to always returns multiples of 32 MB worth of pages. This could be a configurable variable rather than a fixed magic number.
-
- Sep 2024
-
elixir.bootlin.com elixir.bootlin.com
-
if (lruvec->file_cost + lruvec->anon_cost > lrusize / 4) { lruvec->file_cost /= 2; lruvec->anon_cost /= 2; }
It is a configuration policy. The policy here is to adjust the cost of current page. The cost means the overhead for kernel to operate the page if the page is swapped out. Kernel adopts a decay policy. Specifically, if current cost is greater than lrusize/4, its cost will be divided by 2. If kernel has no this policy, after a long-term running, the cost of each page is very high. Kernel might mistakenly reserve pages which are frequently visited long time ago but are inactive currently. It might cause performance degradation. The value (lrusize/4) here has a trade-off between performance and sensitivity. For example, if the value is too small, kernel will frequently adjust the priority of each page, resulting in process's performance degradation. If the value is too large, kernel might be misleaded by historical data, causing wrongly swapping currently popular pages and further performance degradation.
-
if (megs < 16) page_cluster = 2; else page_cluster = 3;
It is a configuration policy. The policy here is to determine the size of page cluster. "2" and "3" is determined externally to the kernel. Page cluster is the actual execution unit when swapping. If the machine is small-memory, kernel executes swap operation on 4 (2^2) pages for each time. Otherwise, kernel operats 8 (2^3) for each time. The rational here is to avoid much memory pressure for small-memory system and to improve performance for large-memory system.
-
-
elixir.bootlin.com elixir.bootlin.com
-
mod_memcg_page_state(area->pages[i], MEMCG_VMALLOC, 1);
It is a configuration policy. It is used to count the physical page for memory control group. The policy here is one physical page corresponds to one count to the memory control group. If using huge page, the value here might not be 1,
-
schedule_timeout_uninterruptible(1);
It is a configuration policy. If kernel cannot allocate an enough virtual space with alignment, while nofail is specified to disallow failure, the kernel will let the process to sleep for 1 time slot. In this period, the process cannot be interrupted and quit the schedule queue of CPU. The "1" here is a configuration parameter, made externally to the kernel. It is not large enough for latency-sensitive process and is not small enough to retry frequently.
-
if (array_size > PAGE_SIZE) { area->pages = __vmalloc_node(array_size, 1, nested_gfp, node, area->caller); } else { area->pages = kmalloc_node(array_size, nested_gfp, node); }
It is an algorithmic policy and also a configuration policy. The algorithmic policy here is to maxmize the data locality of virtual memory address, by letting the space be in continuous virtual pages. If the demanded size of virtual memory is larger than one page, the kernel will allocate multiple continuous pages for it by using __vmalloc_node(). Otherwise, the kernel will call kmalloc_node() to place it in a single page. On the other hand, to allocate continuous pages, we should invoke __vmalloc_node() by declaring align = 1, which is a configuration policy.
-
if (!counters) return; if (v->flags & VM_UNINITIALIZED) return;
It is an algorithmic policy. The show_numa_info() is used for printing how the virtual memory of v (vm_struct) distributes its pages across numa nodes. The two if conditions are used for filtering the invalid v. The first if means the virtual memory has not been associated with physical page. The second if means the virtual memory has not been initialized yet.
-
if (page) copied = copy_page_to_iter_nofault(page, offset, length, iter); else copied = zero_iter(iter, length);
It is an algorithmic policy. The policy here is to avoid lock/unlock overhead by using copy_page_to_iter_nofault() function plus if-else branch. Because copy_page_to_iter_nofault() is based on no page fault, we need to check the physical page is still alive. So the kernel uses an if condition to guarantee copy_page_to_iter_nofault() without page fault. On the other hand, if the page is not valid, kernel chooses to fill the iter using zero value instead of returning an error. I think it is because it can make invocation more convenient. The caller does not need to do a verification of the return value and does not need further actions to handle it.
-
if (base + last_end < vmalloc_start + last_end) goto overflow; /* * Fitting base has not been found. */ if (va == NULL) goto overflow;
It is an algorithmic policy. The two if conditions are used for checking the feasibility of the allocation. The first if means the adress of the allocation is beyond the allowable address, causing overflow. In this case, since the base address is decided from higher one to smaller one, reducing base address cannot work. Note that the base address is dependent on the va. The second if means we don't find a valid va which has appropriate base address. So the policy here is going to overflow branch to re-allocate va list.
-
if (base + start < va->va_start) { va = node_to_va(rb_prev(&va->rb_node)); base = pvm_determine_end_from_reverse(&va, align) - end; term_area = area; continue; }
It is an algorithmic policy. It is used for checking whether the start address of current va is valid. The policy here is to change a new va, different from the solution of "end address check" (explained in my other annotation). The reason is that we find the base address from high address to low address. If we continue to reduce the base address, the if condition will be always wrong. Changing a new va with a lower start address is the only solution.
-
if (base + end > va->va_end) { base = pvm_determine_end_from_reverse(&va, align) - end; term_area = area; continue; }
It is an algorithmic policy. The outer loop is an endless loop until finding a vaild virtual memory space satisfying the requirements. The if condition here is used to guarantee the space in va is large enough. If not, we continue to scan the memory space from high address to low address while satisfying the alignment requirement. Specifically, tuning the base address to a lower address. And then, it will retry for verification.
-
va = kmem_cache_zalloc(vmap_area_cachep, GFP_NOWAIT); if (WARN_ON_ONCE(!va)) continue;
It is an algorithmic policy. The for loop is used for transferring the virtual memory managment by using from vm_struct (link list) to vm_area (tree?). Inside the for loop, if we cannot allocate a new vmap_area from vmap_area_cachep (va = NULL), the program will simply print a warning and skip current tmp, instread of retry or anything to guarantee the integrity.
-
if (!spin_trylock(&vmap_area_lock)) return false;
It is an algorithmic policy. The vmalloc_dump_obj() function is used for printing the information of specified virtual memory. Due to concurrency, before manipulating the critical state, we must obtain the lock. The policy here is spin_trylock. It only tries once. If fails, the function will simply returns false. I think the policy here is to avoid long-term waiting to improve the performance.
-
-
dl.acm.org dl.acm.org
-
Bacchi
feminist political theory researcher Carol Bacchi is well known for her analytic strategy for policy theory.
-
-
stackoverflow.com stackoverflow.com
-
Disable all observers in your test suite by default. They should not be complicating your model tests because they should have separate concerns anyway. You don't need to unit test that observers actually fire, because ActiveRecord's test suite does that, and your integration tests will cover it.
-
-
elixir.bootlin.com elixir.bootlin.com
-
static inline unsigned int calc_slab_order(unsigned int size, unsigned int min_order, unsigned int max_order, unsigned int fract_leftover) { unsigned int order; for (order = min_order; order <= max_order; order++) { unsigned int slab_size = (unsigned int)PAGE_SIZE << order; unsigned int rem; rem = slab_size % size; if (rem <= slab_size / fract_leftover) break; } return order; }
Code to choose how many pages to allocate for a new slab to minimize wasted space from the remainder
-
-
www.liberation.fr www.liberation.fr
-
Der neue französische Premierminister Michel Barnier hat in seiner Zeit als Umweltminister wesentlich dazu beigetragen, das Vorsorgeprinzip und die finanzielle Verantwortung der Verschmutzenden für Schäden im Umweltrecht zu verankern. Obwohl er zu Amtsbeginn auch von der „ökologischen Schuld" gesprochen hat, erwarten NGOs und Thinktanks, deren Vertreter:innen die Libération befragt hat, allenfalls vorsichtige umweltpolitische Schritte und eine insgesamt restriktive Ausgabenpolitik von ihm.https://www.liberation.fr/environnement/le-premier-ministre-michel-barnier-est-il-vraiment-decide-a-payer-la-dette-ecologique-de-la-france-20240906_7BYVDVAUSJD2VN6M4V7DAI2N2E/
Tags
- Strategic Perspectives
- Allain Bougrain-Dubourg
- Frankreich
- Greenpeace
- Stratégie nationale bas carbone
- Programmation pluriannuelle de l’énergie
- IDDRI policy research institute
- Benoît Leguet
- secrétariat général à la Planification écologique (SGPE)
- Sébastien Treyer
- Réseau Action Climat
- Neil Makaroff
- Ligue pour la protection des oiseaux (LPO)
- Anne Bringault
- Regierung Barnier
- Générations futures
Annotators
URL
-
-
ainowinstitute.org ainowinstitute.org
-
in the 1990s and 2000s, the US government reduced its level of investment as interventionist policy fell out of vogue. This set the stage for Intel’s decline relative to firms like Taiwan Semiconductor Manufacturing Company, now the world’s dominant chip fabricator; and ASML, a Dutch company that is the sole manufacturer of the equipment needed to build state-of-the-art chips.
I hadn’t realised this significance of the loss of subsidy in offshoring
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (folio) { pgoff_t start; rcu_read_lock(); start = page_cache_next_miss(ractl->mapping, index + 1, max_pages); rcu_read_unlock(); if (!start || start - index > max_pages) return; ra->start = start; ra->size = start - index; /* old async_size */ ra->size += req_size; ra->size = get_next_ra_size(ra, max_pages); ra->async_size = ra->size; goto readit;
Read ahead policy for marked folios
-
- Aug 2024
-
x.com x.com
-
https://x.com/Chronotope/status/1828785701732663335
Crypto miners are being paid not to mine to ease energy production/consumption cycles.
Related to protection money for the mob
re: https://x.com/curious_founder/status/1828511303788322888/photo/1 on The Economist's article about crypto mining in Texas o/a 2024-08-27
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (hugetlb_cgroup_disabled())
This probably not an interesting policy decision for ldos. It is a feature flag for the running OS. But if cgroups were decided by policy then this flag would be controlled by the cgroup decision.
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
static long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc, bool can_swap)
figure out how many pages to scan.
-
static void prepare_scan_control(pg_data_t *pgdat, struct scan_control *sc) {
sets up the struct scan_control. Most of the value come from elsewhere but this function seems to bring it all together.
-
-
hypertext.niskanencenter.org hypertext.niskanencenter.org
-
www.aljazeera.com www.aljazeera.com
-
Washington Institute for Near East Policy
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
ksm_thread_pages_to_scan
how many pages to scan. This is what many of the other config values are trying to get at.
-
function to compute a EWA for the number of pages to scan. Uses many of the config parameters from sysfs
-
- Jul 2024
-
www.cecan.ac.uk www.cecan.ac.uk
-
common goal to improve policy evaluations for the better.
for - CECAN - goal - policy improvement
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
static void scan_time_advisor(void)
This function is calculating the pages to scan based on a other metrics such as cpu consumed. Seems like a good place for a learned algorithm.
-
-
www.youtube.com www.youtube.com
-
26:30 Brings up progress traps of this new technology
26:48
question How do we shift our (human being's) relationship with the rest of nature
27:00
metaphor - interspecies communications - AI can be compared to a new scientific instrument that extends our ability to see - We may discover that humanity is not the center of the universe
32:54
Question - Dr Doolittle question - Will we be able to talk to the animals? - Wittgenstein said no - Human Umwelt is different from others - but it may very well happen
34:54
species have culture - Marine mammals enact behavior similar to humans
- Unknown unknowns will likely move to known unknowns and to some known knowns
36:29
citizen science bioacoustic projects - audio moth - sound invisible to humans - ultrasonic sound - intrasonic sound - example - Amazonian river turtles have been found to have hundreds of unique vocalizations to call their baby turtles to safety out in the ocean
41:56
ocean habitat for whales - they can communicate across the entire ocean of the earth - They tell of a story of a whale in Bermuda can communicate with a whale in Ireland
43:00
progress trap - AI for interspecies communications - examples - examples - poachers or eco tourism can misuse
44:08
progress trap - AI for interspecies communications - policy
45:16
whale protection technology - Kim Davies - University of New Brunswick - aquatic drones - drones triangulate whales - ships must not get near 1,000 km of whales to avoid collision - Canadian government fines are up to 250,000 dollars for violating
50:35
environmental regulation - overhaul for the next century - instead of - treatment, we now have the data tools for - prevention
56:40 - ecological relationship - pollinators and plants have co-evolved
1:00:26
AI for interspecies communication - example - human cultural evolution controlling evolution of life on earth
Tags
- metaphor - interspecies communication - AI is like a new scientific instrument
- citizen science bioacoustics
- interspecies communication - umwelt
- ecological relationships - pollinators and plants co-evolved
- progress trap - AI for interspecies communications - policy
- environmental overhaul - treatment to prevention
- question - How do we shift our relationship with the rest of nature? - ESP research objective
- AI for interspecies communication - example - human cultural evolution controlling evolution of life on earth
- progress trap - AI applied to interspecies communications
- progress trap - AI for interspecies communications - examples - poachers - ecotourism
- - whale communication - span the entire ocean
- whale protection - bioacoustic and drones
Annotators
URL
-
- Jun 2024
-
www.lrb.co.uk www.lrb.co.uk
-
In 1880 Britain could with some justification be called the ‘workshop of the world’: it produced more than 20 per cent of global industrial output and about 40 per cent of the world’s manufactured exports. In the nearly half-century since Samuel published his essay of that name, historians have done much to undermine the narrative of an ‘industrial revolution’ bookended by the invention of the spinning jenny in 1764 and the New Poor Law of 1834.
There's an interesting linkage going on here between the industrial revolution (and thus possibly Capitalism) with the creation and even litigation of "the poor" classes in Britain.
Did "the poor" exist in the same way they do today prior to the Industrial Revolution? What are the subtle differences? (Compare with Thompson, E. P. “Time, Work-Discipline, and Industrial Capitalism.” Past & Present, no. 38 (1967): 56–97.)
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
/* * The larger the object size is, the more slabs we want on the partial * list to avoid pounding the page allocator excessively. */ s->min_partial = min_t(unsigned long, MAX_PARTIAL, ilog2(s->size) / 2); s->min_partial = max_t(unsigned long, MIN_PARTIAL, s->min_partial);
A policy decision about how often we may have to go to the page allocator.
-
/* * calculate_sizes() determines the order and the distribution of data within * a slab object. */ 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 static int calculate_sizes(struct kmem_cache *s) {
computes a several values for the allocator based on the size and flags of the allocator being created.
-
#ifndef CONFIG_SLUB_TINY static inline int alloc_kmem_cache_cpus(struct kmem_cache *s)
Depending on the CONFIG_SLUB_TINY should ther be an active slab for each CPU?
-
static inline int calculate_order(unsigned int size) { unsigned int order; unsigned int min_objects; unsigned int max_objects; unsigned int min_order; min_objects = slub_min_objects; if (!min_objects) {
calculate the order (power of two number of pages) that each slab in this allocator should have.
-
max_objects = max(order_objects(slub_max_order, size), 1U); min_objects = min(min_objects, max_objects); min_order = max_t(unsigned int, slub_min_order, get_order(min_objects * size)); if (order_objects(min_order, size) > MAX_OBJS_PER_PAGE) return get_order(size * MAX_OBJS_PER_PAGE) - 1;
Policy calculation
-
s->flags & __OBJECT_POISON
apply policy
-
s->flags & SLAB_RED_ZONE)
debug plicy
-
if (s->flags & __CMPXCHG_DOUBLE) {
Config fastpath?
-
if (s->flags & __CMPXCHG_DOUBLE) {
Fast path config
-
set the number of slabs per cpu
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
int calculate_normal_threshold(struct zone *zone) { int threshold; int mem; /* memory in 128 MB units */ /* * The threshold scales with the number of processors and the amount * of memory per zone. More memory means that we can defer updates for * longer, more processors could lead to more contention. * fls() is used to have a cheap way of logarithmic scaling. * * Some sample thresholds: * * Threshold Processors (fls) Zonesize fls(mem)+1 * ------------------------------------------------------------------ * 8 1 1 0.9-1 GB 4 * 16 2 2 0.9-1 GB 4 * 20 2 2 1-2 GB 5 * 24 2 2 2-4 GB 6 * 28 2 2 4-8 GB 7 * 32 2 2 8-16 GB 8 * 4 2 2 <128M 1 * 30 4 3 2-4 GB 5 * 48 4 3 8-16 GB 8 * 32 8 4 1-2 GB 4 * 32 8 4 0.9-1GB 4 * 10 16 5 <128M 1 * 40 16 5 900M 4 * 70 64 7 2-4 GB 5 * 84 64 7 4-8 GB 6 * 108 512 9 4-8 GB 6 * 125 1024 10 8-16 GB 8 * 125 1024 10 16-32 GB 9 */ mem = zone_managed_pages(zone) >> (27 - PAGE_SHIFT); threshold = 2 * fls(num_online_cpus()) * (1 + fls(mem)); /* * Maximum threshold is 125 */ threshold = min(125, threshold); return threshold; }
a "magic" formula for computing the amount of memory per zone.
-
-
www.utep.edu www.utep.edu
-
If a student either “never attended” or “stopped attending,” faculty should assign an “F” grade in Goldmine. For students that “stopped attending,” faculty should also provide the date of the last known active participation by the student in an instructional activity such as a response to discussion boards, study group, assignments, class lecture, lab, tests, etc. This does not include a student simply logging into the class as this is not considered “active participation.”
unearned F -
-
Faculty who suspect a student of plagiarism or some form of academic dishonesty must report the suspicion to the Dean of Students via The Office of Student Conduct and Conduct Resolution (OSCCR). OSCCR will investigate the allegation and determine the course of action. It is against Regents’ Rules and Regulations for faculty to make a determination independent of OSCCR. According to UTEP’s Handbook of Operating Procedures Section 4.14, “such action is a disciplinary penalty that violates the student’s right to due process and leaves the faculty member vulnerable to a student grievance petition, a civil lawsuit, and possible disciplinary action by the University.” More information is available in the HOOP.
Faculty deciding themselves on academic dishonesty 1. violates student's right to due process 1. leaves faculty vulnerable to a student grievance petition, civil lawsuit....
-
-
www.washburn.edu www.washburn.edu
-
Proper Citation
Citation styles - for web published citations
-
Technology, Education and Copyright Harmonization (TEACH) Act. Signed into law by President Bush on November 2, the TEACH Act loosens the restraints created by the DMCA insofar as education is concerned
TEACH Act - loosens DMCA in favor of fair use
-
More importantly, the idea of Fair Use was effectively removed from Web-based education because of the DMCA
Fair Use revoked b/c of DMCA
-
Digital Millennium Copyright Act (DMCA) was passed in Oct. 1998 "to implement United States treaty obligations and to move the nation's copyright law into the digital age.
Digital Millennium Copyright Act
-
-
uri.libguides.com uri.libguides.com
-
Resources for using sound recordings in online education
Music resources for education
-
-
uri.libguides.com uri.libguides.com
-
Resources for using video in online education
Video resources for educaton
-