- 関連記事
-
- Whozatとかいう謎のSNSから招待された (2008/07/02)
- どうでもいいが (2008/06/30)
- オワタ\(^o^)/ (2008/06/28)
謎のメモ書きの羅列だった初稿をここまで日本語に直した編集者には敬意を表したい。
http://www.atmarkit.co.jp/flinux/rensai/watch2008/watch06a.html
- 関連記事
-
- mmu notifier (2008/07/03)
- kernel watch 6月号 (2008/06/30)
- Alan Coxのシグネチャ (2008/06/30)
--
"Alan, I'm getting a bit worried about you."
-- Linus Torvalds
- 関連記事
-
- kernel watch 6月号 (2008/06/30)
- Alan Coxのシグネチャ (2008/06/30)
- memcgのLRUリストはPageLRUがOFFのときもリストにつながってる (2008/06/29)
ま、今追っているバグとは全然リンクしないんだが。
unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
struct list_head *dst,
unsigned long *scanned, int order,
int mode, struct zone *z,
struct mem_cgroup *mem_cont,
int active, int file)
{
unsigned long nr_taken = 0;
struct page *page;
unsigned long scan;
LIST_HEAD(pc_list);
struct list_head *src;
struct page_cgroup *pc, *tmp;
int nid = z->zone_pgdat->node_id;
int zid = zone_idx(z);
struct mem_cgroup_per_zone *mz;
int lru = LRU_FILE * !!file + !!active;
BUG_ON(!mem_cont);
mz = mem_cgroup_zoneinfo(mem_cont, nid, zid);
src = &mz->lists[lru];
spin_lock(&mz->lru_lock);
scan = 0;
list_for_each_entry_safe_reverse(pc, tmp, src, lru) {
if (scan >= nr_to_scan)
break;
page = pc->page;
// ★ PageLRUがOFFの時は別の人にisolateされているので抜ける
if (unlikely(!PageLRU(page)))
continue;
/*
* TODO: play better with lumpy reclaim, grabbing anything.
*/
if (PageUnevictable(page) ||
(PageActive(page) && !active) ||
(!PageActive(page) && active)) {
__mem_cgroup_move_lists(pc, page_lru(page));
continue;
}
scan++;
list_move(&pc->lru, &pc_list);
if (__isolate_lru_page(page, mode, file) == 0) {
list_move(&page->lru, dst);
nr_taken++;
}
}
list_splice(&pc_list, src); //★isolateしたかどうかに関わらずリストに戻す
spin_unlock(&mz->lru_lock);
*scanned = scan;
return nr_taken;
}
- 関連記事
-
- Alan Coxのシグネチャ (2008/06/30)
- memcgのLRUリストはPageLRUがOFFのときもリストにつながってる (2008/06/29)
- バグがとれねー (2008/06/29)
http://d.hatena.ne.jp/tokuhirom/20080629/1214717545
からリンクされている、akrさんの資料がすばらしい。
なんで直接リンクせずにこっちに貼るかというと、文中の
「貴様の問題などどうでもいい」
がいい味だしてるから
- 関連記事
-
- stapgamesで遊んでみた感想 (2009/01/01)
- 貴様の問題などどうでもいい (2008/06/29)
- beckyでスペルチェック (2008/02/20)
わかっていること
・Activeなリストにつながっているのに、!PageActive() なことがある
・LRUにつながってるのに、!PageLRU() なことがある
・putback_lru_page() rework をはずすとおきない
・putback_lru_page() rework に後から入れた追加修正をはずしても起きる。
よって、根本的になにか見落としてる可能性が高い
・memcgのreclaimは無罪(CONFIG=Nでも再現するから)
- 関連記事
-
- memcgのLRUリストはPageLRUがOFFのときもリストにつながってる (2008/06/29)
- バグがとれねー (2008/06/29)
- がくがく (2008/06/29)
ああ、ものすごく緊張する
- 関連記事
-
- バグがとれねー (2008/06/29)
- がくがく (2008/06/29)
- Linux 2.6.26-rc8 (2008/06/25)
なんか、来月にオタワに行くらしいです。どうでもいい。
あ、でも、日本人で行く人がいれば教えてください。海外とか一人で行動するのめどい
あと、オタワとオワタ\(^o^)/が似すぎていて困る。IME的な意味で
- 関連記事
-
- どうでもいいが (2008/06/30)
- オワタ\(^o^)/ (2008/06/28)
- 校正中 (2008/06/27)
なぜか名言まみれ。
更新します。更新するまでがRubyKaigiです
といいつつ
RubyKaigi'08は(自分の中で)永遠に不滅です
とか。
「これはすごい」x10ぐらいタグをつけたい。
こう、まるでプログラミングしていて、人の作ったルーチンがものすごく汎用的に使えることに
気づいてしまった時のよろこびというか。
- 関連記事
-
- 校正中 (2008/06/27)
- 今日のmatzにっき (2008/06/26)
- やおい? (2008/06/26)
http://gigazine.net/index.php?/news/comments/20080625_brand_sound/
という記事を
特許庁、音ややおいを商標登録できるように法改正へ
と空目した自分はもうダメだと思った
- 関連記事
-
- 今日のmatzにっき (2008/06/26)
- やおい? (2008/06/26)
- putback_lru_page rework パッチがrejectされた (2008/06/26)
リベンジ! リベンジ!
- 関連記事
-
- やおい? (2008/06/26)
- putback_lru_page rework パッチがrejectされた (2008/06/26)
- 未読 (2008/06/24)
・Slab: Fix memory leak in fallback_alloc()
・[IA64] SN2: security hole in sn2_ptc_proc_write
・sctp: Make sure N * sizeof(union sctp_addr) does not overflow.
・Ext4: Fix online resize block group descriptor corruption
・Fix performance regression on lmbench select benchmark
・Fix ZERO_PAGE breakage with vmware
・mm: fix race in COW logic
・x86: fix NULL pointer deref in __switch_to
・ipv6: Drop packets for loopback address from outside of the box.
ほか。
It hasn't been a week, I know, and this is a pretty small set of changes
since -rc7, but I'm going to be mostly incommunicado for the next week or
so, so I just released what will hopefully be the last -rc.
Or maybe not.
It depends on how good you all are while I'm not looking.
Anyway, most of the bulk of the changes here are to Xen and to KVM in
particular, which shows up as a rather unusual dirstat: 65% is in
arch/x86 (counting the asm-x86 changes too). The rest is mostly random
stuff, the appended ShortLog gives a reasonable idea. Several bugzilla
entries are hopefully now closed.
Here's the dirstat (whee - just 5% in drivers - that's a new one):
2.4% Documentation/DocBook/
4.3% Documentation/hwmon/
6.7% Documentation/
24.2% arch/x86/kernel/
5.2% arch/x86/kvm/
25.3% arch/x86/xen/
54.8% arch/x86/
55.4% arch/
3.2% drivers/hwmon/
5.2% drivers/
5.2% fs/nfs/
7.5% fs/
4.4% include/asm-alpha/
10.0% include/asm-x86/
16.5% include/
3.5% kernel/
and the - this time really fairly short - shortlog is appended.
What you don't see from this (maybe I should add some shortlog mode that
shows the size of the patches too) is that a lot of them are really just a
couple of lines (which is also why the KVM changes stand out so much -
they're bigger).
Linus
---
Alan Cox (1):
tty_driver: Update required method documentation
Avi Kivity (3):
KVM: MMU: Fix oops on guest userspace access to guest pagetable
KVM: ioapic: fix lost interrupt when changing a device's irq
KVM: VMX: Fix host msr corruption with preemption enabled
Benjamin Marzinski (1):
[GFS2] fix gfs2 block allocation (cleaned up)
Bernhard Walle (1):
Add return value to reserve_bootmem_node()
Bob Peterson (1):
[GFS2] BUG: unable to handle kernel paging request at ffff81002690e000
Christoph Lameter (1):
Slab: Fix memory leak in fallback_alloc()
Cliff Wickman (2):
[IA64] SN2: security hole in sn2_ptc_proc_write
[IA64] Handle count==0 in sn2_ptc_proc_write()
David Brownell (1):
hwmon: (lm75) sensor reading bugfix
David S. Miller (1):
sctp: Make sure N * sizeof(union sctp_addr) does not overflow.
Eli Cohen (1):
IB/mthca: Clear ICM pages before handing to FW
Eric W. Biederman (1):
netns: Don't receive new packets in a dead network namespace.
Frederic Bohe (1):
Ext4: Fix online resize block group descriptor corruption
Gerd Hoffmann (5):
x86: Add structs and functions for paravirt clocksource
x86: Make xen use the paravirt clocksource structs and functions
KVM: Make kvm host use the paravirt clocksource structs
x86: KVM guest: Use the paravirt clocksource structs and functions
KVM: Remove now unused structs from kvm_para.h
Gustavo Fernando Padovan (1):
removed unused var real_tty on n_tty_ioctl()
Hans de Goede (2):
hwmon: (abituguru3) Identify Abit AW8D board as such
hwmon: (abituguru3) update driver detection
Isaku Yamahata (1):
xen: Use wmb instead of rmb in xen_evtchn_do_upcall().
Ivan Kokshaysky (4):
alpha: fix module load failures on smp (bug #10926)
alpha: link failure fix
alpha: fix compile failures with gcc-4.3 (bug #10438)
alpha: resurrect Cypress IDE quirk
Jason Wessel (2):
kgdb: documentation update - remove kgdboe
kgdb: sparse fix
Jean Delvare (3):
hwmon: (lm85) Fix function RANGE_TO_REG()
hwmon: (adt7473) Initialize max_duty_at_overheat before use
hwmon: Update the sysfs interface documentation
Jeremy Fitzhardinge (3):
xen: mask unwanted pte bits in __supported_pte_mask
xen: don't drop NX bit
xen: remove support for non-PAE 32-bit
Jes Sorensen (1):
[IA64] Fix boot failure on ia64/sn2
Jie Luo (1):
enable bus mastering on i915 at resume time
Johannes Berg (1):
mac80211: detect driver tx bugs
Julia Lawall (1):
[IA64] Eliminate NULL test after alloc_bootmem in iosapic_alloc_rte()
Linus Torvalds (3):
Fix performance regression on lmbench select benchmark
Fix ZERO_PAGE breakage with vmware
Linux 2.6.26-rc8
Marc Hulsman (1):
hwmon: (w83791d) new maintainer
Marcelo Tosatti (4):
KVM: Fix race between timer migration and vcpu migration
KVM: close timer injection race window in __vcpu_run
KVM: MMU: Fix rmap_write_protect() hugepage iteration bug
KVM: MMU: large page update_pte issue with non-PAE 32-bit guests (resend)
Nick Piggin (1):
mm: fix race in COW logic
Oleg Nesterov (1):
sched: refactor wait_for_completion_timeout()
Peter Zijlstra (1):
sched: rt: dont stop the period timer when there are tasks wanting to run
Roland Dreier (1):
sched: fix wait_for_completion_timeout() spurious failure under heavy load
Shan Wei (1):
ipv6: Remove options header when setsockopt's optlen is 0
Stephen Hemminger (1):
pppoe: warning fix
Suresh Siddha (1):
x86: fix NULL pointer deref in __switch_to
Takashi Iwai (2):
ALSA: aw2 - Fix Oops at initialization
ALSA: sb - Fix wrong assertions
Thomas Gleixner (1):
futexes: fix fault handling in futex_lock_pi
Thorsten Kranzkowski (1):
alpha: fix compile error in arch/alpha/mm/init.c
Trond Myklebust (3):
NFS: Reduce the NFS mount code stack usage.
NFS: Fix filehandle size comparisons in the mount code
NFS: nfs_updatepage(): don't mark page as dirty if an error occurred
Wim Van Sebroeck (1):
Revert "[WATCHDOG] hpwdt: Add CFLAGS to get driver working"
YOSHIFUJI Hideaki (1):
ipv6: Drop packets for loopback address from outside of the box.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- 関連記事
-
- がくがく (2008/06/29)
- Linux 2.6.26-rc8 (2008/06/25)
- filesystem freeze featureパッチ (2008/06/24)
- 関連記事
フリーズ中の書き込みを禁止する処理は何処に入っているんだ??
- 関連記事
-
- Linux 2.6.26-rc8 (2008/06/25)
- filesystem freeze featureパッチ (2008/06/24)
- おちゃめなGreg (2008/06/24)
なんていうパッチシリーズが流れているから何事かと思ったら
直後にGregから
That should read "2.6.25.9-rc2 review", sorry about that.
ってきた。
Gregは未来に生きています。
- 関連記事
-
- filesystem freeze featureパッチ (2008/06/24)
- おちゃめなGreg (2008/06/24)
- カーネルのバグでVMwareが動かなくなっていたのが直ったみたい (2008/06/24)
レグレッション騒ぎが最近あったんだけど、その修正がさらにレグレッションをしていました。
という話。
バグは昔からあったのだが、今まではたまたま通っていなかったそうだ。
てゆーか、Linus、こっそりチェックインすんな。
Commit 89f5b7da2a6bad2e84670422ab8192382a5aeb9f ("Reinstate ZERO_PAGE
optimization in 'get_user_pages()' and fix XIP") broke vmware, as
reported by Jeff Chua:
"This broke vmware 6.0.4.
Jun 22 14:53:03.845: vmx| NOT_IMPLEMENTED
/build/mts/release/bora-93057/bora/vmx/main/vmmonPosix.c:774"
and the reason seems to be that there's an old bug in how we handle do
FOLL_ANON on VM_SHARED areas in get_user_pages(), but since it only
triggered if the whole page table was missing, nobody had apparently hit
it before.
The recent changes to 'follow_page()' made the FOLL_ANON logic trigger
not just for whole missing page tables, but for individual pages as
well, and exposed this problem.
This fixes it by making the test for when FOLL_ANON is used more
careful, and also makes the code easier to read and understand by moving
the logic to a separate inline function.
Reported-and-tested-by: Jeff Chua
Signed-off-by: Linus Torvalds
mm/memory.c patch | blob | history
diff --git a/mm/memory.c b/mm/memory.c
index 9aefaae..423e0e7 100644 (file)
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1045,6 +1045,26 @@ no_page_table:
return page;
}
+/* Can we do the FOLL_ANON optimization? */
+static inline int use_zero_page(struct vm_area_struct *vma)
+{
+ /*
+ * We don't want to optimize FOLL_ANON for make_pages_present()
+ * when it tries to page in a VM_LOCKED region. As to VM_SHARED,
+ * we want to get the page from the page tables to make sure
+ * that we serialize and update with any other user of that
+ * mapping.
+ */
+ if (vma->vm_flags & (VM_LOCKED | VM_SHARED))
+ return 0;
+ /*
+ * And if we have a fault or a nopfn routine, it's not an
+ * anonymous region.
+ */
+ return !vma->vm_ops ||
+ (!vma->vm_ops->fault && !vma->vm_ops->nopfn);
+}
+
int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, int len, int write, int force,
struct page **pages, struct vm_area_struct **vmas)
@@ -1119,8 +1139,7 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
foll_flags = FOLL_TOUCH;
if (pages)
foll_flags |= FOLL_GET;
- if (!write && !(vma->vm_flags & VM_LOCKED) &&
- (!vma->vm_ops || !vma->vm_ops->fault))
+ if (!write && use_zero_page(vma))
foll_flags |= FOLL_ANON;
do {
- 関連記事
-
- おちゃめなGreg (2008/06/24)
- カーネルのバグでVMwareが動かなくなっていたのが直ったみたい (2008/06/24)
- 物好きな (2008/06/19)
まあ、きっと行くんでしょう。
これまでにThe Linux Foundation Japan Symposiumに参加された方へ
第8回 The Linux Foundation Japan Symposium開催案内をお送りいたします。
今回のシンポジウムでは、Linux Kernelの最新状況、および、Linuxセキュリティの技
術動向と今後の展望について講演します。
是非ご参加をご検討ください。
また、ご興味のありそうな方へもご回送いただければ幸いです。
Symposium担当
----------------------------------------------------------------------------
=== 2008年7月9日(水) 第8回 The Linux Foundation Japan Symposium ===
The Linux Foundationは、Linuxへの関心を高め、Linuxの成長を促進することを
目的に活動しています。この活動の一環として、国外から Linux/OSS関連システム
開発コミュニティのリーダーを招聘し、日本のソフトウェア技術者向けのイベント
「The Linux Foundation Japan Symposium」を定期的に開催しています。
第8回 The Linux Foundation Japan Symposium
日 時 2008年7月9日(水曜日)9時30分 ~ 17時30分(9時00分受付開始)
場 所 大手町KDDIホール
http://www.kddihall.co.jp/info.html
東京都千代田区大手町1-8-1 KDDI大手町ビル2F Tel.03-3243-9301
テーマ The Latest Kernel and Security
参加費 無料 (事前登録制)
定 員 150名(定員となり次第 受付終了)
対 象 Linux に関心があるソフトウェア開発者、 オープンソースのソフトウェア開発
に貢献したい開発者
プログラムの内容は変更されることがあります。
プレゼンテーションの内容については事前にこのWEBページにてダウンロードできる
ようにする予定です。
** 申込みフォーム内に講演者への事前質問の欄を作りました。戴いた質問は、事前に
講演者に渡し、講演やその後のQ/Aの参考にさせて戴きます。質問は、セミナーの1週間
前まで受付ける予定です。**
----------------------------------------------------------------------------
1. 9:30- 9:40 Opening Remark
2. 9:40-10:40 The Completely Fair Scheduler ---- Thomas Gleixner (linutronix)
CFS(Compeletely Fair Scheduler)は、カーネル2.5以来ずっとLinuxのCPU資源の管理を
担ってきたO(1)スケジューラーを置き換え、カーネル2.6.23に組み込まれました。
CFS と言う言い方自体、実は、この新しいプロセススケジューラーが持つ機能全体を表
現してはいません。たしかに、公平性(fairness)の部分は、O (1)スケジューラーの不足
機能として最も注意を惹きやすいところですし、また、CFSは、O(1)スケジューラーを拡
張した発見的手法であり、完全な応答性と公平性を実現しています。
今回の講演では、この新しいスケジューラーの基本概念を説明し、さらに、いろいろな
機能拡張についても詳説します。
資料: 準備中
3. 10:40-10:50 Coffee Break
4. 10:50-11:50 The Recent Kernel Updates(仮) ---- Andrew Morton (Google)
Linuxカーネルの最新状況に関して簡単に状況報告をした後、できるだけ多くの時間を質
問時間に充てます。
最初に、Linuxユーザの観点から、Linuxを使う際の質問、問題点指摘を募ります。次
に、Linux開発チームを管轄するマネジャーの観点からの質問、コメントを募ります。最
後に、カーネル開発に関して自由に討議する時間を取ります。
資料: 準備中
5. 11:50-13:00 Lunch Break
6. 13:00-14:00 SELinux Project Overview ---- James Morris (Red Hat)
Linux のセキュリティ強化を目差すSELinuxプロジェクトは、強制アクセス制御
(Mandatory Access Control:MAC)をLinuxに作りこみました。広範なセキュリティ要件に
合致するように設計されたSELinuxは、広く利用されているOSとしては、初めてMACセ
キュリティを実現したものと言えます。
SELinuxプロジェクトは、セキュリティの実現に向けたオープンな共同開発作業が、いか
に従来のやり方では達成できないような技術革新をもたらしたかを示す実例です。当初
は複雑過ぎるという問題もありましたが、 SELinuxは最近、急速に進化しており、使い
勝手の改善や、機能の強化がなされています。
今回の講演では、プロジェクトの概観、動作原理、設計目標、今後のマイルストーンな
どを説明します。最近の開発成果と継続中の開発にも触れます。本講演の目的は、
SELinuxがいろいろなセキュリティ目標実現のために利用できることを理解して頂くこと
にあります。
資料: 準備中
7. 14:00-14:10 Break
8. 14:10-15:10 Introduction to Labeled Networking on Linux ---- Paul Moore (HP)
最新のLinuxでは、SELinuxやSmackというようなLSM(Linux Security Module)を活用した
セキュリティ機能が具わっています。これらのLSMは、OS環境の全ての側面に渡り、それ
らのセキュリティポリシーやアクセス制御にLabeled Securityと呼ばれる概念を適用し
ています。Labeled Networkingは、Labeled Securityの概念のネットワークレイヤーへ
の拡張であり、セキュリティラベルに基づくネットワークのアクセス制御を実現する技
術です。
本講演では、Labeled Networkingの導入説明、Linuxカーネルにおけるいろいろな
Labeled Networkingの説明、さらに、それらのおのおのがなぜ重要なのかを解説しま
す。現在のLabeled Networkingの機能および現在開発中の状況にも触れます。最後に、
Labeled Networkingに影響を与える協調や標準化の状況を示し、それらがLinuxに与える
影響について注意喚起します。
資料: 準備中
9. 15:10-15:20 Coffee Break
10. 15:20-16:20 Realities of Mainlining - Case of the TOMOYO Linux Project ---
原田季栄(NTT Data)
TOMOYO Linuxのメインライン化の道のりについて、どう考えて、何を行い、どう感じた
かを「失敗体験を含めて」共有し、参加者の皆さんの参考にしていただきたいと思います。
資料: 準備中
11. 16:20-16:30 Break
12. 16:30-17:30 Panel Discussion:Procedure and Tools for Kernel Development
(仮) ---Andrew Morton、Thomas Gleixner、柴田次一(NEC)
カーネル開発の作法、道具について、最近の状況・変化の様子を紹介していただきます。
13. 17:30-17:35 Closing Remark
----------------------------------------------------------------------------
- 関連記事
-
- 諸般の事情で (2008/06/23)
- Linux Symposium (2008/06/23)
- ふぎゃー (2008/06/17)
とかいうひとが、fsdevelにオレ、reiserfs4のメンテナになりたいんだけど・・
などとメールしている。
今のところ、誰からも反応は付いていないようだが、いまさら、そんなもんを
やりたがる勇気には敬意を表する
Hello All,
I have spend a long time over the last years studying Resier 3 and
Resier4.
How would I go about becoming the new Resier maintainer?
I would like to work on changing Resier appropriately to get accepted
in the the kernel. I am sure that I am not aware of all issues at this
point, but I have known of some issues.
I have attempted to contact Edward Shishkin, but no response.
Would anyone have thoughts?
Thanks!
-Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
- 関連記事
-
- カーネルのバグでVMwareが動かなくなっていたのが直ったみたい (2008/06/24)
- 物好きな (2008/06/19)
- regression 祭りの進捗 (2008/06/18)
1.VM_BUG_ON(page_count(page) != 1) で死ぬ件 その1
Nick Pigginの speculative page cache とのパッチコンフリクトで発生していた。
putback_lru_page()でで死亡。
Lee Schermerhornが修正。
済み。
2.VM_BUG_ON(page_count(page) != 1) で死ぬ件 その2
1の類似障害。ページマイグレーションで死亡。
Daisuke Nishimura が修正。
済み。
3.badpage が起きる件 その1
mlock中のページを解放してると出てた件。
Dave Hansen のpage walkerの修正とコンフリクトしてた。
Lee Schermerhornが修正。
済み。
4.badpage が起きる件 その2
Daisuke Nishimura が報告してる方。再現できねーーー
5./proc/meminfo のMlocked 欄が狂ってる件
2.6.26-rc5-mm2 のときにHugh Dickins がパッチを投げてたが、splice の修正と一緒くたになっていたことが原因で取り込まれてなかった。
分離して再送した。
済み
6./proc/meminfo のanon, file別のメモリ量が狂ってる件
Lee Schermerhornが修正。
済み
だから、明示的に残っている問題は4だけで、あとは、KAMEZAWAさんから出ているputback_lru_page()のレビューとかSEQ replacementのCGROUP対応パッチとかそのへんか。
- 関連記事
-
- 物好きな (2008/06/19)
- regression 祭りの進捗 (2008/06/18)
- split lru seriesのベンチマーク結果 (2008/06/17)
至急直す
- 関連記事
-
- Linux Symposium (2008/06/23)
- ふぎゃー (2008/06/17)
- 世界樹の樹II (2008/06/15)
あの回答で解決済みなっている事に感動する
- 関連記事
-
- ベルセルク (2008/07/01)
- 食パンマンの顔は何枚切りなんですか? (2008/06/17)
- 中印軍演習、インド兵士は火を噴き中国の気功に対抗 (2007/12/25)
On Wed, 11 Jun 2008 14:42:14 -0400 Rik van Rielwrote:
> On large memory systems, the VM can spend way too much time scanning
> through pages that it cannot (or should not) evict from memory. Not
> only does it use up CPU time, but it also provokes lock contention
> and can leave large systems under memory presure in a catatonic state.
Hey, I did some MM testing!
On a 900MB 2-way, allocate and memset 1000MB.
mainline:
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.10s user 10.27s system 62% cpu 16.567 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.12s user 10.23s system 63% cpu 16.234 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.13s user 9.90s system 63% cpu 15.812 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.11s user 9.98s system 65% cpu 15.494 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.12s user 9.94s system 62% cpu 16.000 total
2.6.26-rc5-mm3:
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.15s user 9.81s system 52% cpu 19.117 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.14s user 9.07s system 45% cpu 20.403 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.25s user 9.63s system 34% cpu 28.533 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.15s user 9.35s system 49% cpu 19.196 total
vmm:/home/akpm> time usemem -m 1000
usemem -m 1000 0.13s user 8.79s system 49% cpu 17.993 total
Seems to have saved a little CPU but the IO patterns got worse.
usememでは一長一短だと言っているが、このあと、Rik van Rielが問題は分かっているので
直せると回答した。
qsbench, 4 processes, memory size tuned to threshold-of-swapping*1.1:
Mainline:
vmm:/home/akpm/qsbench> time ./qsbench -p 4 -m 230
./qsbench -p 4 -m 230 175.45s user 45.67s system 60% cpu 6:08.40 total
2.6.26-rc5-mm3:
vmm:/home/akpm/qsbench> time ./qsbench -p 4 -m 230
./qsbench -p 4 -m 230 178.21s user 28.49s system 99% cpu 3:27.14 total
So woot! Professional qsbench users will be pleased ;) It could have
been a fluke though - iirc qsbench is pretty unstable, especially on
the threshold.
Main thing is: it seems stable. Old LTP ran for an hour or so before I
hit the msgctl08 crash (which is a regression in current mainline).
で、こっちは split lruの本領発揮ケースで性能2倍。
- 関連記事
-
- regression 祭りの進捗 (2008/06/18)
- split lru seriesのベンチマーク結果 (2008/06/17)
- なんで、pthread_once()なんて存在するの? (2008/06/16)
はてダのユーザは必見!!
http://d.hatena.ne.jp/NyaRuRu/20080611/p2
実用性云々よりも、まず、その発想にほれぼれだお (゚∀゚)
- 関連記事
-
- タイトルなし (2008/07/17)
- NyaRuRuさんの「日記の登録ボタンを押してみたら,はてなが長時間のメンテナンス中だったときするべきこと」で目から鱗が27枚ほど落ちた件について (2008/06/16)
- ITProのLinuxチューニングの記事がひどい事になっている件について (2008/06/03)
お気に入りなサイトのIT戦記より
// ここを volatile にする
// (この変数の値はアトミック(つまり、レジスタにだけあってメモリにないということがない変数に)になる)
volatile char* p = NULL;
pthread_mutex_t m;
void* f(void* _p) {
// ロックかからない
if (p == NULL) {
pthread_mutex_lock(&m);
// ここからはクリティカルセクション
// 一個目の初期化時にここでブロックしたスレッドのために
// もう一回 NULL チェック
if (p == NULL) {
// ここではまだ p に代入しない
// 代入したら別スレッドで初期化されていない p が返ってしまう
char* tmp = (char*)malloc(10);
strcpy(tmp, "hoge");
// クリティカルセクションの最後で代入
p = tmp;
}
pthread_mutex_unlock(&m);
}
*(char**)_p = p;
}
バグっとるよ。
コンパイラは最適化で、tmpを消してpに直接malloc結果を入れる権利があるので、
最初のロック外のif文で!NULLになっても、それは初期化が終わってないかもしれない。
基本的にメモリバリアーを理解してないと、DCLパターンは地雷。
pthread_once()推奨。
(てゆーか、まさにこのためにpthread_once()はある。pthread_mutex()から構築できるようなコンビニエンス関数は規格に入れないぜ。といっていたPOSIXがpthread_onceを入れた理由はここにある)
以下、わかりやすいまとめサイトへの誘導。
バイナリアンなmemologueさんのサイト:
http://d.hatena.ne.jp/yupo5656/20041011/p1
注意: このページではx86用のメモリバリアを
__asm__ __volatile__ ( "" ::: "memory" );
と紹介していますが、これはユニプロセッサ用なので、Core DuoなまかーなAmachanはちゃんとlfence, sfence命令を入れないとやばいです。
Effective C++を書いたScott Meyersさんのサイト
http://www.nwcpp.org/Downloads/2004/DCLP_notes.pdf
最近、社内向けにメモリバリアのドキュメントを書いたばかりなので、反響があればブログにうpする。
光子力バリアー! ランキング!
- 関連記事
-
- split lru seriesのベンチマーク結果 (2008/06/17)
- なんで、pthread_once()なんて存在するの? (2008/06/16)
- PG_mlocked の扱いについて (2008/06/11)
ぬおー、なんという素晴らしい紹介ページなのだ。
買いましたよ。ちゃんと。
残念ながら、記事を読む前に買っちゃったけど。
ちょうど、事情により特に忙しいわけでもないのに3日ほど徹夜する必要が出てきて、暇つぶしに
めちゃくちゃ役立ちましたよ。
で、感想。
これ、完全やりこみゲー
面白いのはたしかだが、通勤に電車を使わないオイラにはクリア出来る気が少しもしない(^^;
- 関連記事
-
- ふぎゃー (2008/06/17)
- 世界樹の樹II (2008/06/15)
- 2chのLinuxスレッドでの不思議 (2008/06/15)
を見るとなんか、いろいろと書かれているな。
で、返事をしようと思ったら2ch側の都合で書き込み禁止タイムだったので、こちらで。
258 名前:login:Penguin[sage] 投稿日:2008/06/15(日) 11:20:59 ID:C0/eukrT
ブログの方も宣伝だらけだから見てこいや
と宣伝
なんでアンタは僕の個人日記ブログのURLを知っているんじゃよー ( ゚Д゚)
259 名前:login:Penguin[sage] 投稿日:2008/06/15(日) 11:38:55 ID:pDKI+CRl
LKMLの方でも頑張ってますな。
Reviewd-byなんて誰も見てねえと思うが。
いや、Andrew Mortonは再三にわたってレビューワがもっと欲しいと言っている。
どうせ業務上、コードは読むのだから多少の恩返しはすべきかと。
おいらがReviewed-byつけたやつは高確率で数日以内に-mmに入るので、
すくなくとも、Andrewは見てるっぽい。
てゆーか、LKML読んでるならそっちで書けや(#゚Д゚)ゴルァ
とか思ってしまうな。
オープンソースの中でも屈指のすごしやすいコミュニティだと思うよ。
- 関連記事
-
- 世界樹の樹II (2008/06/15)
- 2chのLinuxスレッドでの不思議 (2008/06/15)
- カーネルハックをするのに英語はひつようか? (2008/06/11)
一番もめているのは64bitマシンでしかONに出来ないという仕様。
Linuxのpage構造体のflagsメンバはzoneが4つ、ノードが64個をサポートするために、
2+6=8bit ほど無駄に使われていて、もうビットが残っていなかったのだ。
で、Andorew Mortonが強烈に反対していて、32bitでNUMAサポートを
捨ててもいいからPG_mlockedをONに出来るようにしよう。とか言い出してる。
この人が、人がまだ、つかってる機能を捨ててもいいからって言い出すのは超珍しいような。
- 関連記事
-
- なんで、pthread_once()なんて存在するの? (2008/06/16)
- PG_mlocked の扱いについて (2008/06/11)
- Nick Pigginのせいで急遽 2.6.25-rc5-mm2がリリースされたようです (2008/06/11)
やつは、Linuxカーネル界で唯一テストせずにパッチを突っ込んでくるからなー
追記: すいません、識者からNick Pigginは唯一神じゃない。大神 Ingo Mornarを忘れている。とツッコミを受けました。
カーネル界は八百万の神々がおわしますなぁー
- 関連記事
-
- PG_mlocked の扱いについて (2008/06/11)
- Nick Pigginのせいで急遽 2.6.25-rc5-mm2がリリースされたようです (2008/06/11)
- atimeはいつ更新される? のつづき (2008/06/09)