IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
oktです。 インフラ系とか社内システムとかいろいろ担当してます。 Linuxのカーネルは過去に読み込んだディスクの内容をメインメモリに保持する機能を持ってます。 重要な機能ですが、普段サーバ等を触っている分には意識しないことが多くハマったりします。 意識しないでプログラムの検証なんかしていると、キャッシュ有無で大きく結果が違ったりします。 ちなみにページキャッシュ自体についてはhatenaのnaoyaさんの記事を読むのをお勧めします。 そんなわけで、意図的にキャッシュを消したい場合には?という方のためにメモを残してみます。 linux kernel 2.6.16以降、以下の操作でページキャッシュを強制的にクリアすることができます。 ちなみに、RHEL4は2.6.9ベースのカーネルですが、RHEL4.6から実装されています。 # echo 1 > /proc/sys/vm/drop_cac
組み込みソフトウェア/ハードウェア開発における技術力の向上、改善・最適化などを幅広く支援する“組み込み開発エキスパート”のための情報フォーラム
概要 PCの動作は速いほうが良いに決まっている. 速度低下の原因は何か?大きく分けて2つある. CPU(計算)が遅いか,IO(HDDへの読み書きなど)が遅いか. PCを実際に使用して気づくことがある. CPUが力不足で遅くなることよりも,IOのほうが足を引っ張る事が多い(個人的経験と偏見,モバイルPCとかだと違うかもしれない). 故に,PCの動作を速くしたいなら,IO性能の向上を目論むべき. 自分が知っているのは3つの方法. 1) 高性能なSSDを使う(だが,値段が高い). 2) 爆速なRAMを有効活用する(tmpfsなど). 3) データを圧縮して保存しおく.読み込むべき量が減るので読み込みは速くなる.その分,展開にCPUを消費する. Linux上で3を実現する. 使うのは squashfs と aufs. squashfs は読み込み専用だが,圧縮したデータをあたかも,圧縮していなよう
(大事なことを書くことを忘れていた。回線遅延シミュレーションを安価に行うには、古来、FreeBSD上で動作するDummyNetを使うとか、Linux用だとNISTNetを使うなどがいわれている。いずれも古い話で、NISTNetはカーネル2.6xの上ではコンパイルすらとおらない。そこで) Linuxにnetemというパッケージが導入されている。その解説訳を書いておく。なお、F君から「リアルのデバイスじゃないと動かないっす」という情報が入っている。 netemはネットワークエミュレーションの機能をネットワーク上のプロトコルテストなどのために提供される。今のバージョンは遅延とパケットロスと順序変更(パケット再送)が可能である。 もし、2.6以上のディストレイビューション(Fedora, OpenSuse, Gentoo, Debian, Mandriva, Ubuntu)であるならば、netem
2009/10/23 Linux向けの次世代ファイルシステムとして注目されている「Btrfs」(バター・エフエス)。東京・秋葉原で開催中のThe Linux Symposium 2009で10月23日、Btrfsプロジェクトの創始者で開発をリードするクリス・メイソン氏が、Btrfsで実現する機能や現状について紹介した。 Btrfsは2007年にオラクルが発表した新しいファイルシステムだ。2009年1月にカーネルに取り込まれていて、すでにディスク上のフォーマットはフィックスされていることから、アーリアダプター層などには「すでに十分に使えるレベル」(メイソン氏)になっているという。Btrfsはオラクルが開発していると思われがちだが、IBMやインテルからもコードの貢献があり、例えば次期バージョンに含まれるRAID 5/6/60にはインテルが取り組んでいるという。また、SSDへの最適化も進めており
Tiny Core Linuxのご紹介 イメージサイズ10MBなのにカーネル2.6でGUIを備える驚異のディストロTinyCoreLinux(TC)。創設者がDSLの実質上の開発リーダーだったRobert Shingledeckerさんなので、技術的にも期待できます。DistrowatchのShingledeckerさんのインタビューでは、系列的にはDebian、KNOPPIXベースでもDSLのフォークでもないとのことですが、使用してみるとよりシンプルなDamnSmallLinuxという感じす。まるでDebian->Knoppix->DSL->TCと進化してきたかのように思えてしまいます。つまり、Knoppixのハードウェア認識性の良さとDSLのコンパクトさを兼ね備えているみたいというわけです。もちろん、サイズがサイズなので、標準状態ではターミナル、いくつかの設定スクリプト、そしてパッケー
statで取れる情報の中にはatime, mtime, ctimeがあって、ファイルのアクセス時刻や更新時刻がわかるわけだけど、ctimeって作成時刻だと思ってたら違ったよ! いや、どうやらOSによって異なってくるらしい。Windowsの場合は作成時刻で、Linuxの場合は状態変更時刻らしい。 エクスプローラでファイルのプロパティを見ると「作成日時」「更新日時」「アクセス日時」って並んでるし、多くの記事でも作成日時って書かれてたりするから、ctimeは作成日時なんだと思い込んでたよ! Linuxの場合 http://www.linux.or.jp/JM/html/LDP_man-pages/man2/stat.2.html time_t st_atime; /* 最終アクセス時刻 */ time_t st_mtime; /* 最終修正時刻 */ time_t st_ctime; /* 最終
これまでのインストールガイドでは、ソフトウェアをインストールするためにapt-getコマンドを使ってきました。ところが、いろんなサイトを閲覧しているとaptitudeコマンドを使っているところがけっこうあります。この二つの違いはなんなのでしょうか。そしてどちらを使うべきなのでしょうか。 Googleで"apt-get vs. aptitude"と検索すると、そのものずばりの記事やスレッドやフォーラムの投稿なんかが見つかります。やっぱみんな気になっているのね。ここでは、一番まとまっていたと思われるYet Another Linux Blogのこのエントリを基本に説明していこうと思います。 結論から言うと、「Ubuntuで使うなら今はapt-getに統一しておいた方がいいよ」ということらしいです。実際、非公式なUbuntuGuideのGeneral NotesのところでもAll referen
MO の不良セクタを発見した影響で、昨日から何度か fsck.vfat と戯れていたのだが、fsck.vfat は日本語ファイル名の扱いに致命的なバグがある。 Debian 的には #355903 で報告されているが、今のところ未解決である。 せめて、fsck.vfat にファイル名をチェックしないオプションがあればいいのだけれど… このバグが解決しない限り、日本語ファイル名を含むなら、fsck.vfat は “-a” ではなく “-r” で使った方がよい。 このバグ、日本語ファイル名の一部に「\:*?|/;」と同じコードが含まれているとダメなようだ。 たとえば、U+2212 の「−」は、CP932 では 0x817c である。 しかし、0x7c は「|」のコードであるため不正と判断される。 他の人からもらったファイルにことごとく「−」が含まれていて苦労した。 そういえば、Windows
99syslog - syslog() 及び syslogd の考察(最終更新:2003/5/30) syslogd は、標準ではログメッセージを記録する度に fsync() します。 syslogd の能力低下は、システム全体の能力低下に繋がります。 syslogd の能力低下を防ぐには ログメッセージの「取りこぼし」について ログ時間がズレている? そもそも「ログメッセージに書かれている時間」は、いつの時間だ? syslogd は、ログサーバにログメッセージを送る際、相手に時間を送りません。 syslogd の考察 ここでは、私が、Linux システムで使われている syslogd(sysklogd-1.4.1) の ソースを解析して分かった事について述べます。 syslogd は、標準ではログメッセージを記録する度に fsync() します。 syslogd は、syslog() を
#include <stdio.h> #include <unistd.h> #include <signal.h> #include <errno.h> #include <stdlib.h> #include <wait.h> #include <sys/types.h> #define SHORT_TIME 5 #define MAX_COUNT 5 #define SZ_DATE 28 char *mkdate(); int mvbyte(char *,char,int); int count=0; int main(int argc,char *argv[]) { void sigcatch(),(*istat)(); char date[SZ_DATE]; istat = sigset(SIGINT,sigcatch); for (;;) { printf("%s If you
遅いのは知ってた。で、対処をどうすべきかと考えていたが、自分はlsが遅いのはreaddirとかの関数が遅くて、しょうがないのだと思っていたが、どうもそうではなかった。 lsが遅いのは、それぞれのファイルについて、その名前以外の情報をいつもstatしてたからなのだった。「lsすら遅い」のではなくて「lsするから遅い」のであった。 だから、ファイルの一覧が必要ならば、readdirすればいいだけなのであった。たとえば↓のような、manpageから引っこ抜いただけのようないい加減なコードでも、だいたい動く(SEGVとかするので、さすがにそこは直した) #include #include #include #include int main(int argc, char *argv[]) { DIR *dirp; struct dirent *dp; if (argc != 2 ) { print
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く